Télécharger dlarfx.eso

Retour à la liste

Numérotation des lignes :

dlarfx
  1. C DLARFX SOURCE BP208322 18/07/10 21:15:14 9872
  2. *> \brief \b DLARFX applies an elementary reflector to a general rectangular matrix, with loop unrolling when the reflector has order ≤ 10.
  3. *
  4. * =========== DOCUMENTATION ===========
  5. *
  6. * Online html documentation available at
  7. * http://www.netlib.org/lapack/explore-html/
  8. *
  9. *> \htmlonly
  10. *> Download DLARFX + dependencies
  11. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlarfx.f">
  12. *> [TGZ]</a>
  13. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlarfx.f">
  14. *> [ZIP]</a>
  15. *> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlarfx.f">
  16. *> [TXT]</a>
  17. *> \endhtmlonly
  18. *
  19. * Definition:
  20. * ===========
  21. *
  22. * SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  23. *
  24. * .. Scalar Arguments ..
  25. * CHARACTER SIDE
  26. * INTEGER LDC, M, N
  27. * REAL*8 TAU
  28. * ..
  29. * .. Array Arguments ..
  30. * REAL*8 C( LDC, * ), V( * ), WORK( * )
  31. * ..
  32. *
  33. *
  34. *> \par Purpose:
  35. * =============
  36. *>
  37. *> \verbatim
  38. *>
  39. *> DLARFX applies a real elementary reflector H to a real m by n
  40. *> matrix C, from either the left or the right. H is represented in the
  41. *> form
  42. *>
  43. *> H = I - tau * v * v**T
  44. *>
  45. *> where tau is a real scalar and v is a real vector.
  46. *>
  47. *> If tau = 0, then H is taken to be the unit matrix
  48. *>
  49. *> This version uses inline code if H has order < 11.
  50. *> \endverbatim
  51. *
  52. * Arguments:
  53. * ==========
  54. *
  55. *> \param[in] SIDE
  56. *> \verbatim
  57. *> SIDE is CHARACTER*1
  58. *> = 'L': form H * C
  59. *> = 'R': form C * H
  60. *> \endverbatim
  61. *>
  62. *> \param[in] M
  63. *> \verbatim
  64. *> M is INTEGER
  65. *> The number of rows of the matrix C.
  66. *> \endverbatim
  67. *>
  68. *> \param[in] N
  69. *> \verbatim
  70. *> N is INTEGER
  71. *> The number of columns of the matrix C.
  72. *> \endverbatim
  73. *>
  74. *> \param[in] V
  75. *> \verbatim
  76. *> V is DOUBLE PRECISION array, dimension (M) if SIDE = 'L'
  77. *> or (N) if SIDE = 'R'
  78. *> The vector v in the representation of H.
  79. *> \endverbatim
  80. *>
  81. *> \param[in] TAU
  82. *> \verbatim
  83. *> TAU is DOUBLE PRECISION
  84. *> The value tau in the representation of H.
  85. *> \endverbatim
  86. *>
  87. *> \param[in,out] C
  88. *> \verbatim
  89. *> C is DOUBLE PRECISION array, dimension (LDC,N)
  90. *> On entry, the m by n matrix C.
  91. *> On exit, C is overwritten by the matrix H * C if SIDE = 'L',
  92. *> or C * H if SIDE = 'R'.
  93. *> \endverbatim
  94. *>
  95. *> \param[in] LDC
  96. *> \verbatim
  97. *> LDC is INTEGER
  98. *> The leading dimension of the array C. LDA >= (1,M).
  99. *> \endverbatim
  100. *>
  101. *> \param[out] WORK
  102. *> \verbatim
  103. *> WORK is DOUBLE PRECISION array, dimension
  104. *> (N) if SIDE = 'L'
  105. *> or (M) if SIDE = 'R'
  106. *> WORK is not referenced if H has order < 11.
  107. *> \endverbatim
  108. *
  109. * Authors:
  110. * ========
  111. *
  112. *> \author Univ. of Tennessee
  113. *> \author Univ. of California Berkeley
  114. *> \author Univ. of Colorado Denver
  115. *> \author NAG Ltd.
  116. *
  117. *> \date December 2016
  118. *
  119. *> \ingroup doubleOTHERauxiliary
  120. *
  121. * =====================================================================
  122. SUBROUTINE DLARFX( SIDE, M, N, V, TAU, C, LDC, WORK )
  123. *
  124. * -- LAPACK auxiliary routine (version 3.7.0) --
  125. * -- LAPACK is a software package provided by Univ. of Tennessee, --
  126. * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
  127. * December 2016
  128. *
  129. * .. Scalar Arguments ..
  130. CHARACTER SIDE
  131. INTEGER LDC, M, N
  132. REAL*8 TAU
  133. * ..
  134. * .. Array Arguments ..
  135. REAL*8 C( LDC, * ), V( * ), WORK( * )
  136. * ..
  137. *
  138. * =====================================================================
  139. *
  140. * .. Parameters ..
  141. REAL*8 ZERO, ONE
  142. PARAMETER ( ZERO = 0.0D+0, ONE = 1.0D+0 )
  143. * ..
  144. * .. Local Scalars ..
  145. INTEGER J
  146. REAL*8 SUM, T1, T10, T2, T3, T4, T5, T6, T7, T8, T9,
  147. $ V1, V10, V2, V3, V4, V5, V6, V7, V8, V9
  148. * ..
  149. * .. External Functions ..
  150. LOGICAL LSAME
  151. EXTERNAL LSAME
  152. * ..
  153. * .. External Subroutines ..
  154. EXTERNAL DLARF
  155. * ..
  156. * .. Executable Statements ..
  157. *
  158. IF( TAU.EQ.ZERO )
  159. $ RETURN
  160. IF( LSAME( SIDE, 'L' ) ) THEN
  161. *
  162. * Form H * C, where H has order m.
  163. *
  164. GO TO ( 10, 30, 50, 70, 90, 110, 130, 150,
  165. $ 170, 190 )M
  166. *
  167. * Code for general M
  168. *
  169. CALL DLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
  170. GO TO 410
  171. 10 CONTINUE
  172. *
  173. * Special code for 1 x 1 Householder
  174. *
  175. T1 = ONE - TAU*V( 1 )*V( 1 )
  176. DO 20 J = 1, N
  177. C( 1, J ) = T1*C( 1, J )
  178. 20 CONTINUE
  179. GO TO 410
  180. 30 CONTINUE
  181. *
  182. * Special code for 2 x 2 Householder
  183. *
  184. V1 = V( 1 )
  185. T1 = TAU*V1
  186. V2 = V( 2 )
  187. T2 = TAU*V2
  188. DO 40 J = 1, N
  189. SUM = V1*C( 1, J ) + V2*C( 2, J )
  190. C( 1, J ) = C( 1, J ) - SUM*T1
  191. C( 2, J ) = C( 2, J ) - SUM*T2
  192. 40 CONTINUE
  193. GO TO 410
  194. 50 CONTINUE
  195. *
  196. * Special code for 3 x 3 Householder
  197. *
  198. V1 = V( 1 )
  199. T1 = TAU*V1
  200. V2 = V( 2 )
  201. T2 = TAU*V2
  202. V3 = V( 3 )
  203. T3 = TAU*V3
  204. DO 60 J = 1, N
  205. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J )
  206. C( 1, J ) = C( 1, J ) - SUM*T1
  207. C( 2, J ) = C( 2, J ) - SUM*T2
  208. C( 3, J ) = C( 3, J ) - SUM*T3
  209. 60 CONTINUE
  210. GO TO 410
  211. 70 CONTINUE
  212. *
  213. * Special code for 4 x 4 Householder
  214. *
  215. V1 = V( 1 )
  216. T1 = TAU*V1
  217. V2 = V( 2 )
  218. T2 = TAU*V2
  219. V3 = V( 3 )
  220. T3 = TAU*V3
  221. V4 = V( 4 )
  222. T4 = TAU*V4
  223. DO 80 J = 1, N
  224. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  225. $ V4*C( 4, J )
  226. C( 1, J ) = C( 1, J ) - SUM*T1
  227. C( 2, J ) = C( 2, J ) - SUM*T2
  228. C( 3, J ) = C( 3, J ) - SUM*T3
  229. C( 4, J ) = C( 4, J ) - SUM*T4
  230. 80 CONTINUE
  231. GO TO 410
  232. 90 CONTINUE
  233. *
  234. * Special code for 5 x 5 Householder
  235. *
  236. V1 = V( 1 )
  237. T1 = TAU*V1
  238. V2 = V( 2 )
  239. T2 = TAU*V2
  240. V3 = V( 3 )
  241. T3 = TAU*V3
  242. V4 = V( 4 )
  243. T4 = TAU*V4
  244. V5 = V( 5 )
  245. T5 = TAU*V5
  246. DO 100 J = 1, N
  247. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  248. $ V4*C( 4, J ) + V5*C( 5, J )
  249. C( 1, J ) = C( 1, J ) - SUM*T1
  250. C( 2, J ) = C( 2, J ) - SUM*T2
  251. C( 3, J ) = C( 3, J ) - SUM*T3
  252. C( 4, J ) = C( 4, J ) - SUM*T4
  253. C( 5, J ) = C( 5, J ) - SUM*T5
  254. 100 CONTINUE
  255. GO TO 410
  256. 110 CONTINUE
  257. *
  258. * Special code for 6 x 6 Householder
  259. *
  260. V1 = V( 1 )
  261. T1 = TAU*V1
  262. V2 = V( 2 )
  263. T2 = TAU*V2
  264. V3 = V( 3 )
  265. T3 = TAU*V3
  266. V4 = V( 4 )
  267. T4 = TAU*V4
  268. V5 = V( 5 )
  269. T5 = TAU*V5
  270. V6 = V( 6 )
  271. T6 = TAU*V6
  272. DO 120 J = 1, N
  273. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  274. $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J )
  275. C( 1, J ) = C( 1, J ) - SUM*T1
  276. C( 2, J ) = C( 2, J ) - SUM*T2
  277. C( 3, J ) = C( 3, J ) - SUM*T3
  278. C( 4, J ) = C( 4, J ) - SUM*T4
  279. C( 5, J ) = C( 5, J ) - SUM*T5
  280. C( 6, J ) = C( 6, J ) - SUM*T6
  281. 120 CONTINUE
  282. GO TO 410
  283. 130 CONTINUE
  284. *
  285. * Special code for 7 x 7 Householder
  286. *
  287. V1 = V( 1 )
  288. T1 = TAU*V1
  289. V2 = V( 2 )
  290. T2 = TAU*V2
  291. V3 = V( 3 )
  292. T3 = TAU*V3
  293. V4 = V( 4 )
  294. T4 = TAU*V4
  295. V5 = V( 5 )
  296. T5 = TAU*V5
  297. V6 = V( 6 )
  298. T6 = TAU*V6
  299. V7 = V( 7 )
  300. T7 = TAU*V7
  301. DO 140 J = 1, N
  302. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  303. $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  304. $ V7*C( 7, J )
  305. C( 1, J ) = C( 1, J ) - SUM*T1
  306. C( 2, J ) = C( 2, J ) - SUM*T2
  307. C( 3, J ) = C( 3, J ) - SUM*T3
  308. C( 4, J ) = C( 4, J ) - SUM*T4
  309. C( 5, J ) = C( 5, J ) - SUM*T5
  310. C( 6, J ) = C( 6, J ) - SUM*T6
  311. C( 7, J ) = C( 7, J ) - SUM*T7
  312. 140 CONTINUE
  313. GO TO 410
  314. 150 CONTINUE
  315. *
  316. * Special code for 8 x 8 Householder
  317. *
  318. V1 = V( 1 )
  319. T1 = TAU*V1
  320. V2 = V( 2 )
  321. T2 = TAU*V2
  322. V3 = V( 3 )
  323. T3 = TAU*V3
  324. V4 = V( 4 )
  325. T4 = TAU*V4
  326. V5 = V( 5 )
  327. T5 = TAU*V5
  328. V6 = V( 6 )
  329. T6 = TAU*V6
  330. V7 = V( 7 )
  331. T7 = TAU*V7
  332. V8 = V( 8 )
  333. T8 = TAU*V8
  334. DO 160 J = 1, N
  335. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  336. $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  337. $ V7*C( 7, J ) + V8*C( 8, J )
  338. C( 1, J ) = C( 1, J ) - SUM*T1
  339. C( 2, J ) = C( 2, J ) - SUM*T2
  340. C( 3, J ) = C( 3, J ) - SUM*T3
  341. C( 4, J ) = C( 4, J ) - SUM*T4
  342. C( 5, J ) = C( 5, J ) - SUM*T5
  343. C( 6, J ) = C( 6, J ) - SUM*T6
  344. C( 7, J ) = C( 7, J ) - SUM*T7
  345. C( 8, J ) = C( 8, J ) - SUM*T8
  346. 160 CONTINUE
  347. GO TO 410
  348. 170 CONTINUE
  349. *
  350. * Special code for 9 x 9 Householder
  351. *
  352. V1 = V( 1 )
  353. T1 = TAU*V1
  354. V2 = V( 2 )
  355. T2 = TAU*V2
  356. V3 = V( 3 )
  357. T3 = TAU*V3
  358. V4 = V( 4 )
  359. T4 = TAU*V4
  360. V5 = V( 5 )
  361. T5 = TAU*V5
  362. V6 = V( 6 )
  363. T6 = TAU*V6
  364. V7 = V( 7 )
  365. T7 = TAU*V7
  366. V8 = V( 8 )
  367. T8 = TAU*V8
  368. V9 = V( 9 )
  369. T9 = TAU*V9
  370. DO 180 J = 1, N
  371. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  372. $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  373. $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J )
  374. C( 1, J ) = C( 1, J ) - SUM*T1
  375. C( 2, J ) = C( 2, J ) - SUM*T2
  376. C( 3, J ) = C( 3, J ) - SUM*T3
  377. C( 4, J ) = C( 4, J ) - SUM*T4
  378. C( 5, J ) = C( 5, J ) - SUM*T5
  379. C( 6, J ) = C( 6, J ) - SUM*T6
  380. C( 7, J ) = C( 7, J ) - SUM*T7
  381. C( 8, J ) = C( 8, J ) - SUM*T8
  382. C( 9, J ) = C( 9, J ) - SUM*T9
  383. 180 CONTINUE
  384. GO TO 410
  385. 190 CONTINUE
  386. *
  387. * Special code for 10 x 10 Householder
  388. *
  389. V1 = V( 1 )
  390. T1 = TAU*V1
  391. V2 = V( 2 )
  392. T2 = TAU*V2
  393. V3 = V( 3 )
  394. T3 = TAU*V3
  395. V4 = V( 4 )
  396. T4 = TAU*V4
  397. V5 = V( 5 )
  398. T5 = TAU*V5
  399. V6 = V( 6 )
  400. T6 = TAU*V6
  401. V7 = V( 7 )
  402. T7 = TAU*V7
  403. V8 = V( 8 )
  404. T8 = TAU*V8
  405. V9 = V( 9 )
  406. T9 = TAU*V9
  407. V10 = V( 10 )
  408. T10 = TAU*V10
  409. DO 200 J = 1, N
  410. SUM = V1*C( 1, J ) + V2*C( 2, J ) + V3*C( 3, J ) +
  411. $ V4*C( 4, J ) + V5*C( 5, J ) + V6*C( 6, J ) +
  412. $ V7*C( 7, J ) + V8*C( 8, J ) + V9*C( 9, J ) +
  413. $ V10*C( 10, J )
  414. C( 1, J ) = C( 1, J ) - SUM*T1
  415. C( 2, J ) = C( 2, J ) - SUM*T2
  416. C( 3, J ) = C( 3, J ) - SUM*T3
  417. C( 4, J ) = C( 4, J ) - SUM*T4
  418. C( 5, J ) = C( 5, J ) - SUM*T5
  419. C( 6, J ) = C( 6, J ) - SUM*T6
  420. C( 7, J ) = C( 7, J ) - SUM*T7
  421. C( 8, J ) = C( 8, J ) - SUM*T8
  422. C( 9, J ) = C( 9, J ) - SUM*T9
  423. C( 10, J ) = C( 10, J ) - SUM*T10
  424. 200 CONTINUE
  425. GO TO 410
  426. ELSE
  427. *
  428. * Form C * H, where H has order n.
  429. *
  430. GO TO ( 210, 230, 250, 270, 290, 310, 330, 350,
  431. $ 370, 390 )N
  432. *
  433. * Code for general N
  434. *
  435. CALL DLARF( SIDE, M, N, V, 1, TAU, C, LDC, WORK )
  436. GO TO 410
  437. 210 CONTINUE
  438. *
  439. * Special code for 1 x 1 Householder
  440. *
  441. T1 = ONE - TAU*V( 1 )*V( 1 )
  442. DO 220 J = 1, M
  443. C( J, 1 ) = T1*C( J, 1 )
  444. 220 CONTINUE
  445. GO TO 410
  446. 230 CONTINUE
  447. *
  448. * Special code for 2 x 2 Householder
  449. *
  450. V1 = V( 1 )
  451. T1 = TAU*V1
  452. V2 = V( 2 )
  453. T2 = TAU*V2
  454. DO 240 J = 1, M
  455. SUM = V1*C( J, 1 ) + V2*C( J, 2 )
  456. C( J, 1 ) = C( J, 1 ) - SUM*T1
  457. C( J, 2 ) = C( J, 2 ) - SUM*T2
  458. 240 CONTINUE
  459. GO TO 410
  460. 250 CONTINUE
  461. *
  462. * Special code for 3 x 3 Householder
  463. *
  464. V1 = V( 1 )
  465. T1 = TAU*V1
  466. V2 = V( 2 )
  467. T2 = TAU*V2
  468. V3 = V( 3 )
  469. T3 = TAU*V3
  470. DO 260 J = 1, M
  471. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 )
  472. C( J, 1 ) = C( J, 1 ) - SUM*T1
  473. C( J, 2 ) = C( J, 2 ) - SUM*T2
  474. C( J, 3 ) = C( J, 3 ) - SUM*T3
  475. 260 CONTINUE
  476. GO TO 410
  477. 270 CONTINUE
  478. *
  479. * Special code for 4 x 4 Householder
  480. *
  481. V1 = V( 1 )
  482. T1 = TAU*V1
  483. V2 = V( 2 )
  484. T2 = TAU*V2
  485. V3 = V( 3 )
  486. T3 = TAU*V3
  487. V4 = V( 4 )
  488. T4 = TAU*V4
  489. DO 280 J = 1, M
  490. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  491. $ V4*C( J, 4 )
  492. C( J, 1 ) = C( J, 1 ) - SUM*T1
  493. C( J, 2 ) = C( J, 2 ) - SUM*T2
  494. C( J, 3 ) = C( J, 3 ) - SUM*T3
  495. C( J, 4 ) = C( J, 4 ) - SUM*T4
  496. 280 CONTINUE
  497. GO TO 410
  498. 290 CONTINUE
  499. *
  500. * Special code for 5 x 5 Householder
  501. *
  502. V1 = V( 1 )
  503. T1 = TAU*V1
  504. V2 = V( 2 )
  505. T2 = TAU*V2
  506. V3 = V( 3 )
  507. T3 = TAU*V3
  508. V4 = V( 4 )
  509. T4 = TAU*V4
  510. V5 = V( 5 )
  511. T5 = TAU*V5
  512. DO 300 J = 1, M
  513. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  514. $ V4*C( J, 4 ) + V5*C( J, 5 )
  515. C( J, 1 ) = C( J, 1 ) - SUM*T1
  516. C( J, 2 ) = C( J, 2 ) - SUM*T2
  517. C( J, 3 ) = C( J, 3 ) - SUM*T3
  518. C( J, 4 ) = C( J, 4 ) - SUM*T4
  519. C( J, 5 ) = C( J, 5 ) - SUM*T5
  520. 300 CONTINUE
  521. GO TO 410
  522. 310 CONTINUE
  523. *
  524. * Special code for 6 x 6 Householder
  525. *
  526. V1 = V( 1 )
  527. T1 = TAU*V1
  528. V2 = V( 2 )
  529. T2 = TAU*V2
  530. V3 = V( 3 )
  531. T3 = TAU*V3
  532. V4 = V( 4 )
  533. T4 = TAU*V4
  534. V5 = V( 5 )
  535. T5 = TAU*V5
  536. V6 = V( 6 )
  537. T6 = TAU*V6
  538. DO 320 J = 1, M
  539. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  540. $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 )
  541. C( J, 1 ) = C( J, 1 ) - SUM*T1
  542. C( J, 2 ) = C( J, 2 ) - SUM*T2
  543. C( J, 3 ) = C( J, 3 ) - SUM*T3
  544. C( J, 4 ) = C( J, 4 ) - SUM*T4
  545. C( J, 5 ) = C( J, 5 ) - SUM*T5
  546. C( J, 6 ) = C( J, 6 ) - SUM*T6
  547. 320 CONTINUE
  548. GO TO 410
  549. 330 CONTINUE
  550. *
  551. * Special code for 7 x 7 Householder
  552. *
  553. V1 = V( 1 )
  554. T1 = TAU*V1
  555. V2 = V( 2 )
  556. T2 = TAU*V2
  557. V3 = V( 3 )
  558. T3 = TAU*V3
  559. V4 = V( 4 )
  560. T4 = TAU*V4
  561. V5 = V( 5 )
  562. T5 = TAU*V5
  563. V6 = V( 6 )
  564. T6 = TAU*V6
  565. V7 = V( 7 )
  566. T7 = TAU*V7
  567. DO 340 J = 1, M
  568. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  569. $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  570. $ V7*C( J, 7 )
  571. C( J, 1 ) = C( J, 1 ) - SUM*T1
  572. C( J, 2 ) = C( J, 2 ) - SUM*T2
  573. C( J, 3 ) = C( J, 3 ) - SUM*T3
  574. C( J, 4 ) = C( J, 4 ) - SUM*T4
  575. C( J, 5 ) = C( J, 5 ) - SUM*T5
  576. C( J, 6 ) = C( J, 6 ) - SUM*T6
  577. C( J, 7 ) = C( J, 7 ) - SUM*T7
  578. 340 CONTINUE
  579. GO TO 410
  580. 350 CONTINUE
  581. *
  582. * Special code for 8 x 8 Householder
  583. *
  584. V1 = V( 1 )
  585. T1 = TAU*V1
  586. V2 = V( 2 )
  587. T2 = TAU*V2
  588. V3 = V( 3 )
  589. T3 = TAU*V3
  590. V4 = V( 4 )
  591. T4 = TAU*V4
  592. V5 = V( 5 )
  593. T5 = TAU*V5
  594. V6 = V( 6 )
  595. T6 = TAU*V6
  596. V7 = V( 7 )
  597. T7 = TAU*V7
  598. V8 = V( 8 )
  599. T8 = TAU*V8
  600. DO 360 J = 1, M
  601. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  602. $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  603. $ V7*C( J, 7 ) + V8*C( J, 8 )
  604. C( J, 1 ) = C( J, 1 ) - SUM*T1
  605. C( J, 2 ) = C( J, 2 ) - SUM*T2
  606. C( J, 3 ) = C( J, 3 ) - SUM*T3
  607. C( J, 4 ) = C( J, 4 ) - SUM*T4
  608. C( J, 5 ) = C( J, 5 ) - SUM*T5
  609. C( J, 6 ) = C( J, 6 ) - SUM*T6
  610. C( J, 7 ) = C( J, 7 ) - SUM*T7
  611. C( J, 8 ) = C( J, 8 ) - SUM*T8
  612. 360 CONTINUE
  613. GO TO 410
  614. 370 CONTINUE
  615. *
  616. * Special code for 9 x 9 Householder
  617. *
  618. V1 = V( 1 )
  619. T1 = TAU*V1
  620. V2 = V( 2 )
  621. T2 = TAU*V2
  622. V3 = V( 3 )
  623. T3 = TAU*V3
  624. V4 = V( 4 )
  625. T4 = TAU*V4
  626. V5 = V( 5 )
  627. T5 = TAU*V5
  628. V6 = V( 6 )
  629. T6 = TAU*V6
  630. V7 = V( 7 )
  631. T7 = TAU*V7
  632. V8 = V( 8 )
  633. T8 = TAU*V8
  634. V9 = V( 9 )
  635. T9 = TAU*V9
  636. DO 380 J = 1, M
  637. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  638. $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  639. $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 )
  640. C( J, 1 ) = C( J, 1 ) - SUM*T1
  641. C( J, 2 ) = C( J, 2 ) - SUM*T2
  642. C( J, 3 ) = C( J, 3 ) - SUM*T3
  643. C( J, 4 ) = C( J, 4 ) - SUM*T4
  644. C( J, 5 ) = C( J, 5 ) - SUM*T5
  645. C( J, 6 ) = C( J, 6 ) - SUM*T6
  646. C( J, 7 ) = C( J, 7 ) - SUM*T7
  647. C( J, 8 ) = C( J, 8 ) - SUM*T8
  648. C( J, 9 ) = C( J, 9 ) - SUM*T9
  649. 380 CONTINUE
  650. GO TO 410
  651. 390 CONTINUE
  652. *
  653. * Special code for 10 x 10 Householder
  654. *
  655. V1 = V( 1 )
  656. T1 = TAU*V1
  657. V2 = V( 2 )
  658. T2 = TAU*V2
  659. V3 = V( 3 )
  660. T3 = TAU*V3
  661. V4 = V( 4 )
  662. T4 = TAU*V4
  663. V5 = V( 5 )
  664. T5 = TAU*V5
  665. V6 = V( 6 )
  666. T6 = TAU*V6
  667. V7 = V( 7 )
  668. T7 = TAU*V7
  669. V8 = V( 8 )
  670. T8 = TAU*V8
  671. V9 = V( 9 )
  672. T9 = TAU*V9
  673. V10 = V( 10 )
  674. T10 = TAU*V10
  675. DO 400 J = 1, M
  676. SUM = V1*C( J, 1 ) + V2*C( J, 2 ) + V3*C( J, 3 ) +
  677. $ V4*C( J, 4 ) + V5*C( J, 5 ) + V6*C( J, 6 ) +
  678. $ V7*C( J, 7 ) + V8*C( J, 8 ) + V9*C( J, 9 ) +
  679. $ V10*C( J, 10 )
  680. C( J, 1 ) = C( J, 1 ) - SUM*T1
  681. C( J, 2 ) = C( J, 2 ) - SUM*T2
  682. C( J, 3 ) = C( J, 3 ) - SUM*T3
  683. C( J, 4 ) = C( J, 4 ) - SUM*T4
  684. C( J, 5 ) = C( J, 5 ) - SUM*T5
  685. C( J, 6 ) = C( J, 6 ) - SUM*T6
  686. C( J, 7 ) = C( J, 7 ) - SUM*T7
  687. C( J, 8 ) = C( J, 8 ) - SUM*T8
  688. C( J, 9 ) = C( J, 9 ) - SUM*T9
  689. C( J, 10 ) = C( J, 10 ) - SUM*T10
  690. 400 CONTINUE
  691. GO TO 410
  692. END IF
  693. 410 CONTINUE
  694. RETURN
  695. *
  696. * End of DLARFX
  697. *
  698. END
  699.  
  700.  
  701.  

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