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.

slarfx.f 19 kB

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