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

« back to all changes in this revision

Viewing changes to src/tools/ga-5-1/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