Télécharger ilaenv.eso

Retour à la liste

Numérotation des lignes :

ilaenv
  1. C ILAENV SOURCE BP208322 22/09/16 21:15:10 11454
  2. *> \brief \b ILAENV
  3. *
  4. * =========== DOCUMENTATION ===========
  5. *
  6. * Online html documentation available at
  7. * http://www.netlib.org/lapack/explore-html/
  8. *
  9. *> \htmlonly
  10. *> Download ILAENV + dependencies
  11. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ilaenv.f">
  12. *> [TGZ]</a>
  13. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ilaenv.f">
  14. *> [ZIP]</a>
  15. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ilaenv.f">
  16. *> [TXT]</a>
  17. *> \endhtmlonly
  18. *
  19. * Definition:
  20. * ===========
  21. *
  22. * INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
  23. *
  24. * .. Scalar Arguments ..
  25. * CHARACTER*( * ) NAME, OPTS
  26. * INTEGER ISPEC, N1, N2, N3, N4
  27. * ..
  28. *
  29. *
  30. *> \par Purpose:
  31. * =============
  32. *>
  33. *> \verbatim
  34. *>
  35. *> ILAENV is called from the LAPACK routines to choose problem-dependent
  36. *> parameters for the local environment. See ISPEC for a description of
  37. *> the parameters.
  38. *>
  39. *> ILAENV returns an INTEGER
  40. *> if ILAENV >= 0: ILAENV returns the value of the parameter specified by ISPEC
  41. *> if ILAENV < 0: if ILAENV = -k, the k-th argument had an illegal value.
  42. *>
  43. *> This version provides a set of parameters which should give good,
  44. *> but not optimal, performance on many of the currently available
  45. *> computers. Users are encouraged to modify this subroutine to set
  46. *> the tuning parameters for their particular machine using the option
  47. *> and problem size information in the arguments.
  48. *>
  49. *> This routine will not function correctly if it is converted to all
  50. *> lower case. Converting it to all upper case is allowed.
  51. *> \endverbatim
  52. *
  53. * Arguments:
  54. * ==========
  55. *
  56. *> \param[in] ISPEC
  57. *> \verbatim
  58. *> ISPEC is INTEGER
  59. *> Specifies the parameter to be returned as the value of
  60. *> ILAENV.
  61. *> = 1: the optimal blocksize; if this value is 1, an unblocked
  62. *> algorithm will give the best performance.
  63. *> = 2: the minimum block size for which the block routine
  64. *> should be used; if the usable block size is less than
  65. *> this value, an unblocked routine should be used.
  66. *> = 3: the crossover point (in a block routine, for N less
  67. *> than this value, an unblocked routine should be used)
  68. *> = 4: the number of shifts, used in the nonsymmetric
  69. *> eigenvalue routines (DEPRECATED)
  70. *> = 5: the minimum column dimension for blocking to be used;
  71. *> rectangular blocks must have dimension at least k by m,
  72. *> where k is given by ILAENV(2,...) and m by ILAENV(5,...)
  73. *> = 6: the crossover point for the SVD (when reducing an m by n
  74. *> matrix to bidiagonal form, if max(m,n)/min(m,n) exceeds
  75. *> this value, a QR factorization is used first to reduce
  76. *> the matrix to a triangular form.)
  77. *> = 7: the number of processors
  78. *> = 8: the crossover point for the multishift QR method
  79. *> for nonsymmetric eigenvalue problems (DEPRECATED)
  80. *> = 9: maximum size of the subproblems at the bottom of the
  81. *> computation tree in the divide-and-conquer algorithm
  82. *> (used by xGELSD and xGESDD)
  83. *> =10: ieee infinity and NaN arithmetic can be trusted not to trap
  84. *> =11: infinity arithmetic can be trusted not to trap
  85. *> 12 <= ISPEC <= 17:
  86. *> xHSEQR or related subroutines,
  87. *> see IPARMQ for detailed explanation
  88. *> \endverbatim
  89. *>
  90. *> \param[in] NAME
  91. *> \verbatim
  92. *> NAME is CHARACTER*(*)
  93. *> The name of the calling subroutine, in either upper case or
  94. *> lower case.
  95. *> \endverbatim
  96. *>
  97. *> \param[in] OPTS
  98. *> \verbatim
  99. *> OPTS is CHARACTER*(*)
  100. *> The character options to the subroutine NAME, concatenated
  101. *> into a single character string. For example, UPLO = 'U',
  102. *> TRANS = 'T', and DIAG = 'N' for a triangular routine would
  103. *> be specified as OPTS = 'UTN'.
  104. *> \endverbatim
  105. *>
  106. *> \param[in] N1
  107. *> \verbatim
  108. *> N1 is INTEGER
  109. *> \endverbatim
  110. *>
  111. *> \param[in] N2
  112. *> \verbatim
  113. *> N2 is INTEGER
  114. *> \endverbatim
  115. *>
  116. *> \param[in] N3
  117. *> \verbatim
  118. *> N3 is INTEGER
  119. *> \endverbatim
  120. *>
  121. *> \param[in] N4
  122. *> \verbatim
  123. *> N4 is INTEGER
  124. *> Problem dimensions for the subroutine NAME; these may not all
  125. *> be required.
  126. *> \endverbatim
  127. *
  128. * Authors:
  129. * ========
  130. *
  131. *> \author Univ. of Tennessee
  132. *> \author Univ. of California Berkeley
  133. *> \author Univ. of Colorado Denver
  134. *> \author NAG Ltd.
  135. *
  136. *> \date November 2017
  137. *
  138. *> \ingroup OTHERauxiliary
  139. *
  140. *> \par Further Details:
  141. * =====================
  142. *>
  143. *> \verbatim
  144. *>
  145. *> The following conventions have been used when calling ILAENV from the
  146. *> LAPACK routines:
  147. *> 1) OPTS is a concatenation of all of the character options to
  148. *> subroutine NAME, in the same order that they appear in the
  149. *> argument list for NAME, even if they are not used in determining
  150. *> the value of the parameter specified by ISPEC.
  151. *> 2) The problem dimensions N1, N2, N3, N4 are specified in the order
  152. *> that they appear in the argument list for NAME. N1 is used
  153. *> first, N2 second, and so on, and unused problem dimensions are
  154. *> passed a value of -1.
  155. *> 3) The parameter value returned by ILAENV is checked for validity in
  156. *> the calling subroutine. For example, ILAENV is used to retrieve
  157. *> the optimal blocksize for STRTRI as follows:
  158. *>
  159. *> NB = ILAENV( 1, 'STRTRI', UPLO // DIAG, N, -1, -1, -1 )
  160. *> IF( NB.LE.1 ) NB = MAX( 1, N )
  161. *> \endverbatim
  162. *>
  163. * =====================================================================
  164. INTEGER FUNCTION ILAENV( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
  165. *
  166. * -- LAPACK auxiliary routine --
  167. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  168. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  169. *
  170. IMPLICIT INTEGER(I-N)
  171. IMPLICIT REAL*8(A-H,O-Z)
  172. *
  173. * .. Scalar Arguments ..
  174. CHARACTER*( * ) NAME, OPTS
  175. INTEGER ISPEC, N1, N2, N3, N4
  176. * ..
  177. *
  178. * =====================================================================
  179. *
  180. * .. Local Scalars ..
  181. INTEGER I, IC, IZ, NB, NBMIN, NX
  182. LOGICAL CNAME, SNAME, TWOSTAGE
  183. CHARACTER C1*1, C2*2, C4*2, C3*3, SUBNAM*16
  184. * ..
  185. * .. Intrinsic Functions ..
  186. * INTRINSIC CHAR, ICHAR, INT, MIN, REAL
  187. * ..
  188. * .. External Functions ..
  189. INTEGER IEEECK, IPARMQ, IPARAM2STAGE
  190. EXTERNAL IEEECK, IPARMQ, IPARAM2STAGE
  191. * ..
  192. * .. Executable Statements ..
  193. *
  194. GO TO ( 10, 10, 10, 80, 90, 100, 110, 120,
  195. $ 130, 140, 150, 160, 160, 160, 160, 160, 160)ISPEC
  196. *
  197. * Invalid value for ISPEC
  198. *
  199. ILAENV = -1
  200. RETURN
  201. *
  202. 10 CONTINUE
  203. *
  204. * Convert NAME to upper case if the first character is lower case.
  205. *
  206. ILAENV = 1
  207. SUBNAM = NAME
  208. IC = ICHAR( SUBNAM( 1: 1 ) )
  209. IZ = ICHAR( 'Z' )
  210. IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN
  211. *
  212. * ASCII character set
  213. *
  214. IF( IC.GE.97 .AND. IC.LE.122 ) THEN
  215. SUBNAM( 1: 1 ) = CHAR( IC-32 )
  216. DO 20 I = 2, 6
  217. IC = ICHAR( SUBNAM( I: I ) )
  218. IF( IC.GE.97 .AND. IC.LE.122 )
  219. $ SUBNAM( I: I ) = CHAR( IC-32 )
  220. 20 CONTINUE
  221. END IF
  222. *
  223. ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN
  224. *
  225. * EBCDIC character set
  226. *
  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 ) ) THEN
  230. SUBNAM( 1: 1 ) = CHAR( IC+64 )
  231. DO 30 I = 2, 6
  232. IC = ICHAR( SUBNAM( I: I ) )
  233. IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR.
  234. $ ( IC.GE.145 .AND. IC.LE.153 ) .OR.
  235. $ ( IC.GE.162 .AND. IC.LE.169 ) )SUBNAM( I:
  236. $ I ) = CHAR( IC+64 )
  237. 30 CONTINUE
  238. END IF
  239. *
  240. ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN
  241. *
  242. * Prime machines: ASCII+128
  243. *
  244. IF( IC.GE.225 .AND. IC.LE.250 ) THEN
  245. SUBNAM( 1: 1 ) = CHAR( IC-32 )
  246. DO 40 I = 2, 6
  247. IC = ICHAR( SUBNAM( I: I ) )
  248. IF( IC.GE.225 .AND. IC.LE.250 )
  249. $ SUBNAM( I: I ) = CHAR( IC-32 )
  250. 40 CONTINUE
  251. END IF
  252. END IF
  253. *
  254. C1 = SUBNAM( 1: 1 )
  255. SNAME = C1.EQ.'S' .OR. C1.EQ.'D'
  256. CNAME = C1.EQ.'C' .OR. C1.EQ.'Z'
  257. IF( .NOT.( CNAME .OR. SNAME ) )
  258. $ RETURN
  259. C2 = SUBNAM( 2: 3 )
  260. C3 = SUBNAM( 4: 6 )
  261. C4 = C3( 2: 3 )
  262. TWOSTAGE = LEN( SUBNAM ).GE.11
  263. $ .AND. SUBNAM( 11: 11 ).EQ.'2'
  264. *
  265. GO TO ( 50, 60, 70 )ISPEC
  266. *
  267. 50 CONTINUE
  268. *
  269. * ISPEC = 1: block size
  270. *
  271. * In these examples, separate code is provided for setting NB for
  272. * real and complex. We assume that NB will take the same value in
  273. * single or REAL*8.
  274. *
  275. NB = 1
  276. *
  277. IF( SUBNAM(2:6).EQ.'LAORH' ) THEN
  278. *
  279. * This is for *LAORHR_GETRFNP routine
  280. *
  281. IF( SNAME ) THEN
  282. NB = 32
  283. ELSE
  284. NB = 32
  285. END IF
  286. ELSE IF( C2.EQ.'GE' ) THEN
  287. IF( C3.EQ.'TRF' ) THEN
  288. IF( SNAME ) THEN
  289. NB = 64
  290. ELSE
  291. NB = 64
  292. END IF
  293. ELSE IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR.
  294. $ C3.EQ.'QLF' ) THEN
  295. IF( SNAME ) THEN
  296. NB = 32
  297. ELSE
  298. NB = 32
  299. END IF
  300. ELSE IF( C3.EQ.'QR ') THEN
  301. IF( N3 .EQ. 1) THEN
  302. IF( SNAME ) THEN
  303. * M*N
  304. IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN
  305. NB = N1
  306. ELSE
  307. NB = 32768/N2
  308. END IF
  309. ELSE
  310. IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN
  311. NB = N1
  312. ELSE
  313. NB = 32768/N2
  314. END IF
  315. END IF
  316. ELSE
  317. IF( SNAME ) THEN
  318. NB = 1
  319. ELSE
  320. NB = 1
  321. END IF
  322. END IF
  323. ELSE IF( C3.EQ.'LQ ') THEN
  324. IF( N3 .EQ. 2) THEN
  325. IF( SNAME ) THEN
  326. * M*N
  327. IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN
  328. NB = N1
  329. ELSE
  330. NB = 32768/N2
  331. END IF
  332. ELSE
  333. IF ((N1*N2.LE.131072).OR.(N1.LE.8192)) THEN
  334. NB = N1
  335. ELSE
  336. NB = 32768/N2
  337. END IF
  338. END IF
  339. ELSE
  340. IF( SNAME ) THEN
  341. NB = 1
  342. ELSE
  343. NB = 1
  344. END IF
  345. END IF
  346. ELSE IF( C3.EQ.'HRD' ) THEN
  347. IF( SNAME ) THEN
  348. NB = 32
  349. ELSE
  350. NB = 32
  351. END IF
  352. ELSE IF( C3.EQ.'BRD' ) THEN
  353. IF( SNAME ) THEN
  354. NB = 32
  355. ELSE
  356. NB = 32
  357. END IF
  358. ELSE IF( C3.EQ.'TRI' ) THEN
  359. IF( SNAME ) THEN
  360. NB = 64
  361. ELSE
  362. NB = 64
  363. END IF
  364. END IF
  365. ELSE IF( C2.EQ.'PO' ) THEN
  366. IF( C3.EQ.'TRF' ) THEN
  367. IF( SNAME ) THEN
  368. NB = 64
  369. ELSE
  370. NB = 64
  371. END IF
  372. END IF
  373. ELSE IF( C2.EQ.'SY' ) THEN
  374. IF( C3.EQ.'TRF' ) THEN
  375. IF( SNAME ) THEN
  376. IF( TWOSTAGE ) THEN
  377. NB = 192
  378. ELSE
  379. NB = 64
  380. END IF
  381. ELSE
  382. IF( TWOSTAGE ) THEN
  383. NB = 192
  384. ELSE
  385. NB = 64
  386. END IF
  387. END IF
  388. ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
  389. NB = 32
  390. ELSE IF( SNAME .AND. C3.EQ.'GST' ) THEN
  391. NB = 64
  392. END IF
  393. ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
  394. IF( C3.EQ.'TRF' ) THEN
  395. IF( TWOSTAGE ) THEN
  396. NB = 192
  397. ELSE
  398. NB = 64
  399. END IF
  400. ELSE IF( C3.EQ.'TRD' ) THEN
  401. NB = 32
  402. ELSE IF( C3.EQ.'GST' ) THEN
  403. NB = 64
  404. END IF
  405. ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
  406. IF( C3( 1: 1 ).EQ.'G' ) 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. ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
  413. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  414. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  415. $ THEN
  416. NB = 32
  417. END IF
  418. END IF
  419. ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
  420. IF( C3( 1: 1 ).EQ.'G' ) 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. ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
  427. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  428. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  429. $ THEN
  430. NB = 32
  431. END IF
  432. END IF
  433. ELSE IF( C2.EQ.'GB' ) THEN
  434. IF( C3.EQ.'TRF' ) THEN
  435. IF( SNAME ) THEN
  436. IF( N4.LE.64 ) THEN
  437. NB = 1
  438. ELSE
  439. NB = 32
  440. END IF
  441. ELSE
  442. IF( N4.LE.64 ) THEN
  443. NB = 1
  444. ELSE
  445. NB = 32
  446. END IF
  447. END IF
  448. END IF
  449. ELSE IF( C2.EQ.'PB' ) THEN
  450. IF( C3.EQ.'TRF' ) THEN
  451. IF( SNAME ) THEN
  452. IF( N2.LE.64 ) THEN
  453. NB = 1
  454. ELSE
  455. NB = 32
  456. END IF
  457. ELSE
  458. IF( N2.LE.64 ) THEN
  459. NB = 1
  460. ELSE
  461. NB = 32
  462. END IF
  463. END IF
  464. END IF
  465. ELSE IF( C2.EQ.'TR' ) THEN
  466. IF( C3.EQ.'TRI' ) THEN
  467. IF( SNAME ) THEN
  468. NB = 64
  469. ELSE
  470. NB = 64
  471. END IF
  472. ELSE IF ( C3.EQ.'EVC' ) THEN
  473. IF( SNAME ) THEN
  474. NB = 64
  475. ELSE
  476. NB = 64
  477. END IF
  478. END IF
  479. ELSE IF( C2.EQ.'LA' ) THEN
  480. IF( C3.EQ.'UUM' ) THEN
  481. IF( SNAME ) THEN
  482. NB = 64
  483. ELSE
  484. NB = 64
  485. END IF
  486. END IF
  487. ELSE IF( SNAME .AND. C2.EQ.'ST' ) THEN
  488. IF( C3.EQ.'EBZ' ) THEN
  489. NB = 1
  490. END IF
  491. ELSE IF( C2.EQ.'GG' ) THEN
  492. NB = 32
  493. IF( C3.EQ.'HD3' ) THEN
  494. IF( SNAME ) THEN
  495. NB = 32
  496. ELSE
  497. NB = 32
  498. END IF
  499. END IF
  500. END IF
  501. ILAENV = NB
  502. RETURN
  503. *
  504. 60 CONTINUE
  505. *
  506. * ISPEC = 2: minimum block size
  507. *
  508. NBMIN = 2
  509. IF( C2.EQ.'GE' ) THEN
  510. IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
  511. $ 'QLF' ) THEN
  512. IF( SNAME ) THEN
  513. NBMIN = 2
  514. ELSE
  515. NBMIN = 2
  516. END IF
  517. ELSE IF( C3.EQ.'HRD' ) THEN
  518. IF( SNAME ) THEN
  519. NBMIN = 2
  520. ELSE
  521. NBMIN = 2
  522. END IF
  523. ELSE IF( C3.EQ.'BRD' ) THEN
  524. IF( SNAME ) THEN
  525. NBMIN = 2
  526. ELSE
  527. NBMIN = 2
  528. END IF
  529. ELSE IF( C3.EQ.'TRI' ) THEN
  530. IF( SNAME ) THEN
  531. NBMIN = 2
  532. ELSE
  533. NBMIN = 2
  534. END IF
  535. END IF
  536. ELSE IF( C2.EQ.'SY' ) THEN
  537. IF( C3.EQ.'TRF' ) THEN
  538. IF( SNAME ) THEN
  539. NBMIN = 8
  540. ELSE
  541. NBMIN = 8
  542. END IF
  543. ELSE IF( SNAME .AND. C3.EQ.'TRD' ) THEN
  544. NBMIN = 2
  545. END IF
  546. ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
  547. IF( C3.EQ.'TRD' ) THEN
  548. NBMIN = 2
  549. END IF
  550. ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
  551. IF( C3( 1: 1 ).EQ.'G' ) 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. ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
  558. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  559. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  560. $ THEN
  561. NBMIN = 2
  562. END IF
  563. END IF
  564. ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
  565. IF( C3( 1: 1 ).EQ.'G' ) 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. ELSE IF( C3( 1: 1 ).EQ.'M' ) THEN
  572. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  573. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  574. $ THEN
  575. NBMIN = 2
  576. END IF
  577. END IF
  578. ELSE IF( C2.EQ.'GG' ) THEN
  579. NBMIN = 2
  580. IF( C3.EQ.'HD3' ) THEN
  581. NBMIN = 2
  582. END IF
  583. END IF
  584. ILAENV = NBMIN
  585. RETURN
  586. *
  587. 70 CONTINUE
  588. *
  589. * ISPEC = 3: crossover point
  590. *
  591. NX = 0
  592. IF( C2.EQ.'GE' ) THEN
  593. IF( C3.EQ.'QRF' .OR. C3.EQ.'RQF' .OR. C3.EQ.'LQF' .OR. C3.EQ.
  594. $ 'QLF' ) THEN
  595. IF( SNAME ) THEN
  596. NX = 128
  597. ELSE
  598. NX = 128
  599. END IF
  600. ELSE IF( C3.EQ.'HRD' ) THEN
  601. IF( SNAME ) THEN
  602. NX = 128
  603. ELSE
  604. NX = 128
  605. END IF
  606. ELSE IF( C3.EQ.'BRD' ) THEN
  607. IF( SNAME ) THEN
  608. NX = 128
  609. ELSE
  610. NX = 128
  611. END IF
  612. END IF
  613. ELSE IF( C2.EQ.'SY' ) THEN
  614. IF( SNAME .AND. C3.EQ.'TRD' ) THEN
  615. NX = 32
  616. END IF
  617. ELSE IF( CNAME .AND. C2.EQ.'HE' ) THEN
  618. IF( C3.EQ.'TRD' ) THEN
  619. NX = 32
  620. END IF
  621. ELSE IF( SNAME .AND. C2.EQ.'OR' ) THEN
  622. IF( C3( 1: 1 ).EQ.'G' ) THEN
  623. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  624. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  625. $ THEN
  626. NX = 128
  627. END IF
  628. END IF
  629. ELSE IF( CNAME .AND. C2.EQ.'UN' ) THEN
  630. IF( C3( 1: 1 ).EQ.'G' ) THEN
  631. IF( C4.EQ.'QR' .OR. C4.EQ.'RQ' .OR. C4.EQ.'LQ' .OR. C4.EQ.
  632. $ 'QL' .OR. C4.EQ.'HR' .OR. C4.EQ.'TR' .OR. C4.EQ.'BR' )
  633. $ THEN
  634. NX = 128
  635. END IF
  636. END IF
  637. ELSE IF( C2.EQ.'GG' ) THEN
  638. NX = 128
  639. IF( C3.EQ.'HD3' ) THEN
  640. NX = 128
  641. END IF
  642. END IF
  643. ILAENV = NX
  644. RETURN
  645. *
  646. 80 CONTINUE
  647. *
  648. * ISPEC = 4: number of shifts (used by xHSEQR)
  649. *
  650. ILAENV = 6
  651. RETURN
  652. *
  653. 90 CONTINUE
  654. *
  655. * ISPEC = 5: minimum column dimension (not used)
  656. *
  657. ILAENV = 2
  658. RETURN
  659. *
  660. 100 CONTINUE
  661. *
  662. * ISPEC = 6: crossover point for SVD (used by xGELSS and xGESVD)
  663. *
  664. ILAENV = INT( REAL( MIN( N1, N2 ) )*1.6E0 )
  665. RETURN
  666. *
  667. 110 CONTINUE
  668. *
  669. * ISPEC = 7: number of processors (not used)
  670. *
  671. ILAENV = 1
  672. RETURN
  673. *
  674. 120 CONTINUE
  675. *
  676. * ISPEC = 8: crossover point for multishift (used by xHSEQR)
  677. *
  678. ILAENV = 50
  679. RETURN
  680. *
  681. 130 CONTINUE
  682. *
  683. * ISPEC = 9: maximum size of the subproblems at the bottom of the
  684. * computation tree in the divide-and-conquer algorithm
  685. * (used by xGELSD and xGESDD)
  686. *
  687. ILAENV = 25
  688. RETURN
  689. *
  690. 140 CONTINUE
  691. *
  692. * ISPEC = 10: ieee and infinity NaN arithmetic can be trusted not to trap
  693. *
  694. * ILAENV = 0
  695. ILAENV = 1
  696. IF ( ILAENV.EQ.1 ) THEN
  697. ILAENV = IEEECK( 1, 0.0D0, 1.0D0 )
  698. END IF
  699. RETURN
  700. *
  701. 150 CONTINUE
  702. *
  703. * ISPEC = 11: ieee infinity arithmetic can be trusted not to trap
  704. *
  705. * ILAENV = 0
  706. ILAENV = 1
  707. IF ( ILAENV.EQ.1 ) THEN
  708. ILAENV = IEEECK( 0, 0.0D0, 1.0D0 )
  709. END IF
  710. RETURN
  711. *
  712. 160 CONTINUE
  713. *
  714. * 12 <= ISPEC <= 17: xHSEQR or related subroutines.
  715. *
  716. ILAENV = IPARMQ( ISPEC, NAME, OPTS, N1, N2, N3, N4 )
  717. RETURN
  718. *
  719. * End of ILAENV
  720. *
  721. END
  722.  
  723.  
  724.  
  725.  
  726.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales