You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

dlarfx.f 19 kB

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