~ubuntu-branches/ubuntu/utopic/nwchem/utopic

« back to all changes in this revision

Viewing changes to src/tools/ga-5-2/LinAlg/lapack+blas/ilaenv.f

  • Committer: Package Import Robot
  • Author(s): Michael Banck, Daniel Leidert, Andreas Tille, Michael Banck
  • Date: 2013-07-04 12:14:55 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130704121455-5tvsx2qabor3nrui
Tags: 6.3-1
* New upstream release.
* Fixes anisotropic properties (Closes: #696361).
* New features include:
  + Multi-reference coupled cluster (MRCC) approaches
  + Hybrid DFT calculations with short-range HF 
  + New density-functionals including Minnesota (M08, M11) and HSE hybrid
    functionals
  + X-ray absorption spectroscopy (XAS) with TDDFT
  + Analytical gradients for the COSMO solvation model
  + Transition densities from TDDFT 
  + DFT+U and Electron-Transfer (ET) methods for plane wave calculations
  + Exploitation of space group symmetry in plane wave geometry optimizations
  + Local density of states (LDOS) collective variable added to Metadynamics
  + Various new XC functionals added for plane wave calculations, including
    hybrid and range-corrected ones
  + Electric field gradients with relativistic corrections 
  + Nudged Elastic Band optimization method
  + Updated basis sets and ECPs 

[ Daniel Leidert ]
* debian/watch: Fixed.

[ Andreas Tille ]
* debian/upstream: References

[ Michael Banck ]
* debian/upstream (Name): New field.
* debian/patches/02_makefile_flags.patch: Refreshed.
* debian/patches/06_statfs_kfreebsd.patch: Likewise.
* debian/patches/07_ga_target_force_linux.patch: Likewise.
* debian/patches/05_avoid_inline_assembler.patch: Removed, no longer needed.
* debian/patches/09_backported_6.1.1_fixes.patch: Likewise.
* debian/control (Build-Depends): Added gfortran-4.7 and gcc-4.7.
* debian/patches/10_force_gcc-4.7.patch: New patch, explicitly sets
  gfortran-4.7 and gcc-4.7, fixes test suite hang with gcc-4.8 (Closes:
  #701328, #713262).
* debian/testsuite: Added tests for COSMO analytical gradients and MRCC.
* debian/rules (MRCC_METHODS): New variable, required to enable MRCC methods.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
      INTEGER          FUNCTION GAL_ILAENV( ISPEC, NAME, OPTS,
 
2
     $                 N1, N2, N3, N4 )
 
3
*
 
4
*  -- LAPACK auxiliary routine (preliminary version) --
 
5
*     Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd.,
 
6
*     Courant Institute, Argonne National Lab, and Rice University
 
7
*     February 20, 1992
 
8
*
 
9
*     .. Scalar Arguments ..
 
10
      CHARACTER*( * )    NAME, OPTS
 
11
      INTEGER            ISPEC, N1, N2, N3, N4
 
12
*     ..
 
13
*
 
14
*  Purpose
 
15
*  =======
 
16
*
 
17
*  GAL_ILAENV is called from the LAPACK routines to choose
 
18
*  problem-dependent parameters for the local environment.  See ISPEC
 
19
*  for a description of the parameters.
 
20
*
 
21
*  This version provides a set of parameters which should give good,
 
22
*  but not optimal, performance on many of the currently available
 
23
*  computers.  Users are encouraged to modify this subroutine to set
 
24
*  the tuning parameters for their particular machine using the option
 
25
*  and problem size information in the arguments.
 
26
*
 
27
*  This routine will not function correctly if it is converted to all
 
28
*  lower case.  Converting it to all upper case is allowed.
 
29
*
 
30
*  Arguments
 
31
*  =========
 
32
*
 
33
*  ISPEC   (input) INTEGER
 
34
*          Specifies the parameter to be returned as the value of
 
35
*          GAL_ILAENV.
 
36
*          = 1: the optimal blocksize; if this value is 1, an unblocked
 
37
*               algorithm will give the best performance.
 
38
*          = 2: the minimum block size for which the block routine
 
39
*               should be used; if the usable block size is less than
 
40
*               this value, an unblocked routine should be used.
 
41
*          = 3: the crossover point (in a block routine, for N less
 
42
*               than this value, an unblocked routine should be used)
 
43
*          = 4: the number of shifts, used in the nonsymmetric
 
44
*               eigenvalue routines
 
45
*          = 5: the minimum column dimension for blocking to be used;
 
46
*               rectangular blocks must have dimension at least k by m,
 
47
*               where k is given by GAL_ILAENV(2,...) and m by
 
48
*               GAL_ILAENV(5,...)
 
49
*          = 6: the crossover point for the SVD (when reducing an m by n
 
50
*               matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
 
51
*               this value, a QR factorization is used first to reduce
 
52
*               the matrix to a triangular form.)
 
53
*          = 7: the number of processors
 
54
*          = 8: the crossover point for the multishift QR and QZ methods
 
55
*               for nonsymmetric eigenvalue problems.
 
56
*
 
57
*  NAME    (input) CHARACTER*(*)
 
58
*          The name of the calling subroutine, in either upper case or
 
59
*          lower case.
 
60
*
 
61
*  OPTS    (input) CHARACTER*(*)
 
62
*          The character options to the subroutine NAME, concatenated
 
63
*          into a single character string.  For example, UPLO = 'U',
 
64
*          TRANS = 'T', and DIAG = 'N' for a triangular routine would
 
65
*          be specified as OPTS = 'UTN'.
 
66
*
 
67
*  N1      (input) INTEGER
 
68
*  N2      (input) INTEGER
 
69
*  N3      (input) INTEGER
 
70
*  N4      (input) INTEGER
 
71
*          Problem dimensions for the subroutine NAME; these may not all
 
72
*          be required.
 
73
*
 
74
* (GAL_ILAENV) (output) INTEGER
 
75
*          >= 0: the value of the parameter specified by ISPEC
 
76
*          < 0:  if GAL_ILAENV = -k, the k-th argument had an illegal
 
77
*                value.
 
78
*
 
79
*  Further Details
 
80
*  ===============
 
81
*
 
82
*  The following conventions have been used when calling GAL_ILAENV from
 
83
*  the LAPACK routines:
 
84
*  1)  OPTS is a concatenation of all of the character options to
 
85
*      subroutine NAME, in the same order that they appear in the
 
86
*      argument list for NAME, even if they are not used in determining
 
87
*      the value of the parameter specified by ISPEC.
 
88
*  2)  The problem dimensions N1, N2, N3, N4 are specified in the order
 
89
*      that they appear in the argument list for NAME.  N1 is used
 
90
*      first, N2 second, and so on, and unused problem dimensions are
 
91
*      passed a value of -1.
 
92
*  3)  The parameter value returned by GAL_ILAENV is checked for
 
93
*      validity in the calling subroutine.  For example, GAL_ILAENV is
 
94
*      used to retrieve the optimal blocksize for STRTRI as follows:
 
95
*
 
96
*      NB = GAL_ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
 
97
*      IF( NB.LE.1 ) NB = MAX( 1, N )
 
98
*
 
99
*  =====================================================================
 
100
*
 
101
*     .. Local Scalars ..
 
102
      LOGICAL            CNAME, SNAME
 
103
      CHARACTER*1        C1
 
104
      CHARACTER*2        C2, C4
 
105
      CHARACTER*3        C3
 
106
      CHARACTER*6        SUBNAM
 
107
      INTEGER            I, IC, IZ, NB, NBMIN, NX
 
108
*     ..
 
109
*     .. Intrinsic Functions ..
 
110
      INTRINSIC          CHAR, ICHAR, INT, MIN, REAL
 
111
*     ..
 
112
*     .. Executable Statements ..
 
113
*
 
114
      GO TO ( 100, 100, 100, 400, 500, 600, 700, 800 ) ISPEC
 
115
*
 
116
*     Invalid value for ISPEC
 
117
*
 
118
      GAL_ILAENV = -1
 
119
      RETURN
 
120
*
 
121
  100 CONTINUE
 
122
*
 
123
*     Convert NAME to upper case if the first character is lower case.
 
124
*
 
125
      GAL_ILAENV = 1
 
126
      SUBNAM = NAME
 
127
      IC = ICHAR( SUBNAM( 1:1 ) )
 
128
      IZ = ICHAR( 'Z' )
 
129
      IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN
 
130
*
 
131
*        ASCII character set
 
132
*
 
133
         IF( IC.GE.97 .AND. IC.LE.122 ) THEN
 
134
            SUBNAM( 1:1 ) = CHAR( IC-32 )
 
135
            DO 10 I = 2, 6
 
136
               IC = ICHAR( SUBNAM( I:I ) )
 
137
               IF( IC.GE.97 .AND. IC.LE.122 )
 
138
     $            SUBNAM( I:I ) = CHAR( IC-32 )
 
139
   10       CONTINUE
 
140
         END IF
 
141
*
 
142
      ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN
 
143
*
 
144
*        EBCDIC character set
 
145
*
 
146
         IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
 
147
     $       ( IC.GE.145 .AND. IC.LE.153 ) .OR.
 
148
     $       ( IC.GE.162 .AND. IC.LE.169 ) ) THEN
 
149
            SUBNAM( 1:1 ) = CHAR( IC+64 )
 
150
            DO 20 I = 2, 6
 
151
               IC = ICHAR( SUBNAM( I:I ) )
 
152
               IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
 
153
     $             ( IC.GE.145 .AND. IC.LE.153 ) .OR.
 
154
     $             ( IC.GE.162 .AND. IC.LE.169 ) )
 
155
     $            SUBNAM( I:I ) = CHAR( IC+64 )
 
156
   20       CONTINUE
 
157
         END IF
 
158
*
 
159
      ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN
 
160
*
 
161
*        Prime machines:  ASCII+128
 
162
*
 
163
         IF( IC.GE.225 .AND. IC.LE.250 ) THEN
 
164
            SUBNAM( 1:1 ) = CHAR( IC-32 )
 
165
            DO 30 I = 2, 6
 
166
               IC = ICHAR( SUBNAM( I:I ) )
 
167
               IF( IC.GE.225 .AND. IC.LE.250 )
 
168
     $            SUBNAM( I:I ) = CHAR( IC-32 )
 
169
   30       CONTINUE
 
170
         END IF
 
171
      END IF
 
172
*
 
173
      C1 = SUBNAM( 1:1 )
 
174
      SNAME = C1.EQ.'S' .OR. C1.EQ.'D'
 
175
      CNAME = C1.EQ.'C' .OR. C1.EQ.'Z'
 
176
      IF( .NOT.( CNAME .OR. SNAME ) )
 
177
     $   RETURN
 
178
      C2 = SUBNAM( 2:3 )
 
179
      C3 = SUBNAM( 4:6 )
 
180
      C4 = C3( 2:3 )
 
181
*
 
182
      GO TO ( 110, 200, 300 ) ISPEC
 
183
*
 
184
  110 CONTINUE
 
185
*
 
186
*     ISPEC = 1:  block size
 
187
*
 
188
*     In these examples, separate code is provided for setting NB for
 
189
*     real and complex.  We assume that NB will take the same value in
 
190
*     single or double precision.
 
191
*
 
192
      NB = 1
 
193
*
 
194
      IF( C2.EQ.'GE' ) THEN
 
195
         IF( C3.EQ.'TRF' ) THEN
 
196
            IF( SNAME ) THEN
 
197
               NB = 64
 
198
            ELSE
 
199
               NB = 64
 
200
            END IF
 
201
         ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
 
202
     $            C3.EQ.'QLF' ) THEN
 
203
            IF( SNAME ) THEN
 
204
               NB = 32
 
205
            ELSE
 
206
               NB = 32
 
207
            END IF
 
208
         ELSE IF( C3.EQ.'HRD' ) THEN
 
209
            IF( SNAME ) THEN
 
210
               NB = 32
 
211
            ELSE
 
212
               NB = 32
 
213
            END IF
 
214
         ELSE IF( C3.EQ.'BRD' ) THEN
 
215
            IF( SNAME ) THEN
 
216
               NB = 32
 
217
            ELSE
 
218
               NB = 32
 
219
            END IF
 
220
         ELSE IF( C3.EQ.'TRI' ) THEN
 
221
            IF( SNAME ) THEN
 
222
               NB = 64
 
223
            ELSE
 
224
               NB = 64
 
225
            END IF
 
226
         END IF
 
227
      ELSE IF( C2.EQ.'PO' ) THEN
 
228
         IF( C3.EQ.'TRF' ) THEN
 
229
            IF( SNAME ) THEN
 
230
               NB = 64
 
231
            ELSE
 
232
               NB = 64
 
233
            END IF
 
234
         END IF
 
235
      ELSE IF( C2.EQ.'SY' ) THEN
 
236
         IF( C3.EQ.'TRF' ) THEN
 
237
            IF( SNAME ) THEN
 
238
               NB = 64
 
239
            ELSE
 
240
               NB = 64
 
241
            END IF
 
242
         ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
 
243
            NB = 1
 
244
         ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
 
245
            NB = 64
 
246
         END IF
 
247
      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
 
248
         IF( C3.EQ.'TRF' ) THEN
 
249
            NB = 64
 
250
         ELSE IF( C3.EQ.'TRD' ) THEN
 
251
            NB = 1
 
252
         ELSE IF( C3.EQ.'GST' ) THEN
 
253
            NB = 64
 
254
         END IF
 
255
      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
 
256
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
257
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
258
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
259
     $          C4.EQ.'BR' ) THEN
 
260
               NB = 32
 
261
            END IF
 
262
         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
 
263
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
264
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
265
     $          C4.EQ.'BR' ) THEN
 
266
               NB = 32
 
267
            END IF
 
268
         END IF
 
269
      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
 
270
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
271
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
272
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
273
     $          C4.EQ.'BR' ) THEN
 
274
               NB = 32
 
275
            END IF
 
276
         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
 
277
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
278
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
279
     $          C4.EQ.'BR' ) THEN
 
280
               NB = 32
 
281
            END IF
 
282
         END IF
 
283
      ELSE IF( C2.EQ.'GB' ) THEN
 
284
         IF( C3.EQ.'TRF' ) THEN
 
285
            IF( SNAME ) THEN
 
286
               IF( N4.LE.64 ) THEN
 
287
                  NB = 1
 
288
               ELSE
 
289
                  NB = 32
 
290
               END IF
 
291
            ELSE
 
292
               IF( N4.LE.64 ) THEN
 
293
                  NB = 1
 
294
               ELSE
 
295
                  NB = 32
 
296
               END IF
 
297
            END IF
 
298
         END IF
 
299
      ELSE IF( C2.EQ.'PB' ) THEN
 
300
         IF( C3.EQ.'TRF' ) THEN
 
301
            IF( SNAME ) THEN
 
302
               IF( N2.LE.64 ) THEN
 
303
                  NB = 1
 
304
               ELSE
 
305
                  NB = 32
 
306
               END IF
 
307
            ELSE
 
308
               IF( N2.LE.64 ) THEN
 
309
                  NB = 1
 
310
               ELSE
 
311
                  NB = 32
 
312
               END IF
 
313
            END IF
 
314
         END IF
 
315
      ELSE IF( C2.EQ.'TR' ) THEN
 
316
         IF( C3.EQ.'TRI' ) THEN
 
317
            IF( SNAME ) THEN
 
318
               NB = 64
 
319
            ELSE
 
320
               NB = 64
 
321
            END IF
 
322
         END IF
 
323
      ELSE IF( C2.EQ.'LA' ) THEN
 
324
         IF( C3.EQ.'UUM' ) THEN
 
325
            IF( SNAME ) THEN
 
326
               NB = 64
 
327
            ELSE
 
328
               NB = 64
 
329
            END IF
 
330
         END IF
 
331
      ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
 
332
         IF( C3.EQ.'EBZ' ) THEN
 
333
            NB = 1
 
334
         END IF
 
335
      END IF
 
336
      GAL_ILAENV = NB
 
337
      RETURN
 
338
*
 
339
  200 CONTINUE
 
340
*
 
341
*     ISPEC = 2:  minimum block size
 
342
*
 
343
      NBMIN = 2
 
344
      IF( C2.EQ.'GE' ) THEN
 
345
         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
 
346
     $       C3.EQ.'QLF' ) THEN
 
347
            IF( SNAME ) THEN
 
348
               NBMIN = 2
 
349
            ELSE
 
350
               NBMIN = 2
 
351
            END IF
 
352
         ELSE IF( C3.EQ.'HRD' ) THEN
 
353
            IF( SNAME ) THEN
 
354
               NBMIN = 2
 
355
            ELSE
 
356
               NBMIN = 2
 
357
            END IF
 
358
         ELSE IF( C3.EQ.'BRD' ) THEN
 
359
            IF( SNAME ) THEN
 
360
               NBMIN = 2
 
361
            ELSE
 
362
               NBMIN = 2
 
363
            END IF
 
364
         ELSE IF( C3.EQ.'TRI' ) THEN
 
365
            IF( SNAME ) THEN
 
366
               NBMIN = 2
 
367
            ELSE
 
368
               NBMIN = 2
 
369
            END IF
 
370
         END IF
 
371
      ELSE IF( C2.EQ.'SY' ) THEN
 
372
         IF( C3.EQ.'TRF' ) THEN
 
373
            IF( SNAME ) THEN
 
374
               NBMIN = 2
 
375
            ELSE
 
376
               NBMIN = 2
 
377
            END IF
 
378
         ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
 
379
            NBMIN = 2
 
380
         END IF
 
381
      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
 
382
         IF( C3.EQ.'TRD' ) THEN
 
383
            NBMIN = 2
 
384
         END IF
 
385
      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
 
386
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
387
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
388
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
389
     $          C4.EQ.'BR' ) THEN
 
390
               NBMIN = 2
 
391
            END IF
 
392
         ELSE IF( C3( 1:1 ).EQ.'M' ) THEN
 
393
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
394
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
395
     $          C4.EQ.'BR' ) THEN
 
396
               NBMIN = 2
 
397
            END IF
 
398
         END IF
 
399
      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
 
400
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
401
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
402
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
403
     $          C4.EQ.'BR' ) THEN
 
404
               NBMIN = 2
 
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.
 
408
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
409
     $          C4.EQ.'BR' ) THEN
 
410
               NBMIN = 2
 
411
            END IF
 
412
         END IF
 
413
      END IF
 
414
      GAL_ILAENV = NBMIN
 
415
      RETURN
 
416
*
 
417
  300 CONTINUE
 
418
*
 
419
*     ISPEC = 3:  crossover point
 
420
*
 
421
      NX = 0
 
422
      IF( C2.EQ.'GE' ) THEN
 
423
         IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
 
424
     $       C3.EQ.'QLF' ) THEN
 
425
            IF( SNAME ) THEN
 
426
               NX = 128
 
427
            ELSE
 
428
               NX = 128
 
429
            END IF
 
430
         ELSE IF( C3.EQ.'HRD' ) THEN
 
431
            IF( SNAME ) THEN
 
432
               NX = 128
 
433
            ELSE
 
434
               NX = 128
 
435
            END IF
 
436
         ELSE IF( C3.EQ.'BRD' ) THEN
 
437
            IF( SNAME ) THEN
 
438
               NX = 128
 
439
            ELSE
 
440
               NX = 128
 
441
            END IF
 
442
         END IF
 
443
      ELSE IF( C2.EQ.'SY' ) THEN
 
444
         IF( SNAME .AND. C3.EQ.'TRD' ) THEN
 
445
            NX = 1
 
446
         END IF
 
447
      ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
 
448
         IF( C3.EQ.'TRD' ) THEN
 
449
            NX = 1
 
450
         END IF
 
451
      ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
 
452
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
453
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
454
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
455
     $          C4.EQ.'BR' ) THEN
 
456
               NX = 128
 
457
            END IF
 
458
         END IF
 
459
      ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
 
460
         IF( C3( 1:1 ).EQ.'G' ) THEN
 
461
            IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR.
 
462
     $          C4.EQ.'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR.
 
463
     $          C4.EQ.'BR' ) THEN
 
464
               NX = 128
 
465
            END IF
 
466
         END IF
 
467
      END IF
 
468
      GAL_ILAENV = NX
 
469
      RETURN
 
470
*
 
471
  400 CONTINUE
 
472
*
 
473
*     ISPEC = 4:  number of shifts (used by xHSEQR)
 
474
*
 
475
      GAL_ILAENV = 6
 
476
      RETURN
 
477
*
 
478
  500 CONTINUE
 
479
*
 
480
*     ISPEC = 5:  minimum column dimension (not used)
 
481
*
 
482
      GAL_ILAENV = 2
 
483
      RETURN
 
484
*
 
485
  600 CONTINUE
 
486
*
 
487
*     ISPEC = 6:  crossover point for SVD (used by xGELSS and xGESVD)
 
488
*
 
489
      GAL_ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 )
 
490
      RETURN
 
491
*
 
492
  700 CONTINUE
 
493
*
 
494
*     ISPEC = 7:  number of processors (not used)
 
495
*
 
496
      GAL_ILAENV = 1
 
497
      RETURN
 
498
*
 
499
  800 CONTINUE
 
500
*
 
501
*     ISPEC = 8:  crossover point for multishift (used by xHSEQR)
 
502
*
 
503
      GAL_ILAENV = 50
 
504
      RETURN
 
505
*
 
506
*     End of GAL_ILAENV
 
507
*
 
508
      END