LAPACK  3.10.0
LAPACK: Linear Algebra PACKage
ilaenv.f
Go to the documentation of this file.
1 *> \brief \b ILAENV
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 *> \htmlonly
9 *> Download ILAENV + dependencies
10 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ilaenv.f">
11 *> [TGZ]</a>
12 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ilaenv.f">
13 *> [ZIP]</a>
14 *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaenv.f">
15 *> [TXT]</a>
16 *> \endhtmlonly
17 *
18 * Definition:
19 * ===========
20 *
21 * INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
22 *
23 * .. Scalar Arguments ..
24 * CHARACTER*( * ) NAME, OPTS
25 * INTEGER ISPEC, N1, N2, N3, N4
26 * ..
27 *
28 *
29 *> \par Purpose:
30 * =============
31 *>
32 *> \verbatim
33 *>
34 *> ILAENV is called from the LAPACK routines to choose problem-dependent
35 *> parameters for the local environment. See ISPEC for a description of
36 *> the parameters.
37 *>
38 *> ILAENV returns an INTEGER
39 *> if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC
40 *> if ILAENV < 0: if ILAENV = -k, the k-th argument had an illegal value.
41 *>
42 *> This version provides a set of parameters which should give good,
43 *> but not optimal, performance on many of the currently available
44 *> computers. Users are encouraged to modify this subroutine to set
45 *> the tuning parameters for their particular machine using the option
46 *> and problem size information in the arguments.
47 *>
48 *> This routine will not function correctly if it is converted to all
49 *> lower case. Converting it to all upper case is allowed.
50 *> \endverbatim
51 *
52 * Arguments:
53 * ==========
54 *
55 *> \param[in] ISPEC
56 *> \verbatim
57 *> ISPEC is INTEGER
58 *> Specifies the parameter to be returned as the value of
59 *> ILAENV.
60 *> = 1: the optimal blocksize; if this value is 1, an unblocked
61 *> algorithm will give the best performance.
62 *> = 2: the minimum block size for which the block routine
63 *> should be used; if the usable block size is less than
64 *> this value, an unblocked routine should be used.
65 *> = 3: the crossover point (in a block routine, for N less
66 *> than this value, an unblocked routine should be used)
67 *> = 4: the number of shifts, used in the nonsymmetric
68 *> eigenvalue routines (DEPRECATED)
69 *> = 5: the minimum column dimension for blocking to be used;
70 *> rectangular blocks must have dimension at least k by m,
71 *> where k is given by ILAENV(2,...) and m by ILAENV(5,...)
72 *> = 6: the crossover point for the SVD (when reducing an m by n
73 *> matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
74 *> this value, a QR factorization is used first to reduce
75 *> the matrix to a triangular form.)
76 *> = 7: the number of processors
77 *> = 8: the crossover point for the multishift QR method
78 *> for nonsymmetric eigenvalue problems (DEPRECATED)
79 *> = 9: maximum size of the subproblems at the bottom of the
80 *> computation tree in the divide-and-conquer algorithm
81 *> (used by xGELSD and xGESDD)
82 *> =10: ieee infinity and NaN arithmetic can be trusted not to trap
83 *> =11: infinity arithmetic can be trusted not to trap
84 *> 12 <= ISPEC <= 17:
85 *> xHSEQR or related subroutines,
86 *> see IPARMQ for detailed explanation
87 *> \endverbatim
88 *>
89 *> \param[in] NAME
90 *> \verbatim
91 *> NAME is CHARACTER*(*)
92 *> The name of the calling subroutine, in either upper case or
93 *> lower case.
94 *> \endverbatim
95 *>
96 *> \param[in] OPTS
97 *> \verbatim
98 *> OPTS is CHARACTER*(*)
99 *> The character options to the subroutine NAME, concatenated
100 *> into a single character string. For example, UPLO = 'U',
101 *> TRANS = 'T', and DIAG = 'N' for a triangular routine would
102 *> be specified as OPTS = 'UTN'.
103 *> \endverbatim
104 *>
105 *> \param[in] N1
106 *> \verbatim
107 *> N1 is INTEGER
108 *> \endverbatim
109 *>
110 *> \param[in] N2
111 *> \verbatim
112 *> N2 is INTEGER
113 *> \endverbatim
114 *>
115 *> \param[in] N3
116 *> \verbatim
117 *> N3 is INTEGER
118 *> \endverbatim
119 *>
120 *> \param[in] N4
121 *> \verbatim
122 *> N4 is INTEGER
123 *> Problem dimensions for the subroutine NAME; these may not all
124 *> be required.
125 *> \endverbatim
126 *
127 * Authors:
128 * ========
129 *
130 *> \author Univ. of Tennessee
131 *> \author Univ. of California Berkeley
132 *> \author Univ. of Colorado Denver
133 *> \author NAG Ltd.
134 *
135 *> \ingroup OTHERauxiliary
136 *
137 *> \par Further Details:
138 * =====================
139 *>
140 *> \verbatim
141 *>
142 *> The following conventions have been used when calling ILAENV from the
143 *> LAPACK routines:
144 *> 1) OPTS is a concatenation of all of the character options to
145 *> subroutine NAME, in the same order that they appear in the
146 *> argument list for NAME, even if they are not used in determining
147 *> the value of the parameter specified by ISPEC.
148 *> 2) The problem dimensions N1, N2, N3, N4 are specified in the order
149 *> that they appear in the argument list for NAME. N1 is used
150 *> first, N2 second, and so on, and unused problem dimensions are
151 *> passed a value of -1.
152 *> 3) The parameter value returned by ILAENV is checked for validity in
153 *> the calling subroutine. For example, ILAENV is used to retrieve
154 *> the optimal blocksize for STRTRI as follows:
155 *>
156 *> NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
157 *> IF( NB.LE.1 ) NB = MAX( 1, N )
158 *> \endverbatim
159 *>
160 * =====================================================================
161  INTEGER FUNCTION ilaenv( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
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 *
715  END
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