dlarfx.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. /* dlarfx.f -- translated by f2c (version 20061008).
  2. You must link the resulting object file with libf2c:
  3. on Microsoft Windows system, link with libf2c.lib;
  4. on Linux or Unix systems, link with .../path/to/libf2c.a -lm
  5. or, if you install libf2c.a in a standard place, with -lf2c -lm
  6. -- in that order, at the end of the command line, as in
  7. cc *.o -lf2c -lm
  8. Source for libf2c is in /netlib/f2c/libf2c.zip, e.g.,
  9. http://www.netlib.org/f2c/libf2c.zip
  10. */
  11. #include "f2c.h"
  12. #include "blaswrap.h"
  13. /* Table of constant values */
  14. static integer c__1 = 1;
  15. /* Subroutine */ int _starpu_dlarfx_(char *side, integer *m, integer *n, doublereal *
  16. v, doublereal *tau, doublereal *c__, integer *ldc, doublereal *work)
  17. {
  18. /* System generated locals */
  19. integer c_dim1, c_offset, i__1;
  20. /* Local variables */
  21. integer j;
  22. doublereal t1, t2, t3, t4, t5, t6, t7, t8, t9, v1, v2, v3, v4, v5, v6, v7,
  23. v8, v9, t10, v10, sum;
  24. extern /* Subroutine */ int _starpu_dlarf_(char *, integer *, integer *,
  25. doublereal *, integer *, doublereal *, doublereal *, integer *,
  26. doublereal *);
  27. extern logical _starpu_lsame_(char *, char *);
  28. /* -- LAPACK auxiliary routine (version 3.2) -- */
  29. /* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. */
  30. /* November 2006 */
  31. /* .. Scalar Arguments .. */
  32. /* .. */
  33. /* .. Array Arguments .. */
  34. /* .. */
  35. /* Purpose */
  36. /* ======= */
  37. /* DLARFX applies a real elementary reflector H to a real m by n */
  38. /* matrix C, from either the left or the right. H is represented in the */
  39. /* form */
  40. /* H = I - tau * v * v' */
  41. /* where tau is a real scalar and v is a real vector. */
  42. /* If tau = 0, then H is taken to be the unit matrix */
  43. /* This version uses inline code if H has order < 11. */
  44. /* Arguments */
  45. /* ========= */
  46. /* SIDE (input) CHARACTER*1 */
  47. /* = 'L': form H * C */
  48. /* = 'R': form C * H */
  49. /* M (input) INTEGER */
  50. /* The number of rows of the matrix C. */
  51. /* N (input) INTEGER */
  52. /* The number of columns of the matrix C. */
  53. /* V (input) DOUBLE PRECISION array, dimension (M) if SIDE = 'L' */
  54. /* or (N) if SIDE = 'R' */
  55. /* The vector v in the representation of H. */
  56. /* TAU (input) DOUBLE PRECISION */
  57. /* The value tau in the representation of H. */
  58. /* C (input/output) DOUBLE PRECISION array, dimension (LDC,N) */
  59. /* On entry, the m by n matrix C. */
  60. /* On exit, C is overwritten by the matrix H * C if SIDE = 'L', */
  61. /* or C * H if SIDE = 'R'. */
  62. /* LDC (input) INTEGER */
  63. /* The leading dimension of the array C. LDA >= (1,M). */
  64. /* WORK (workspace) DOUBLE PRECISION array, dimension */
  65. /* (N) if SIDE = 'L' */
  66. /* or (M) if SIDE = 'R' */
  67. /* WORK is not referenced if H has order < 11. */
  68. /* ===================================================================== */
  69. /* .. Parameters .. */
  70. /* .. */
  71. /* .. Local Scalars .. */
  72. /* .. */
  73. /* .. External Functions .. */
  74. /* .. */
  75. /* .. External Subroutines .. */
  76. /* .. */
  77. /* .. Executable Statements .. */
  78. /* Parameter adjustments */
  79. --v;
  80. c_dim1 = *ldc;
  81. c_offset = 1 + c_dim1;
  82. c__ -= c_offset;
  83. --work;
  84. /* Function Body */
  85. if (*tau == 0.) {
  86. return 0;
  87. }
  88. if (_starpu_lsame_(side, "L")) {
  89. /* Form H * C, where H has order m. */
  90. switch (*m) {
  91. case 1: goto L10;
  92. case 2: goto L30;
  93. case 3: goto L50;
  94. case 4: goto L70;
  95. case 5: goto L90;
  96. case 6: goto L110;
  97. case 7: goto L130;
  98. case 8: goto L150;
  99. case 9: goto L170;
  100. case 10: goto L190;
  101. }
  102. /* Code for general M */
  103. _starpu_dlarf_(side, m, n, &v[1], &c__1, tau, &c__[c_offset], ldc, &work[1]);
  104. goto L410;
  105. L10:
  106. /* Special code for 1 x 1 Householder */
  107. t1 = 1. - *tau * v[1] * v[1];
  108. i__1 = *n;
  109. for (j = 1; j <= i__1; ++j) {
  110. c__[j * c_dim1 + 1] = t1 * c__[j * c_dim1 + 1];
  111. /* L20: */
  112. }
  113. goto L410;
  114. L30:
  115. /* Special code for 2 x 2 Householder */
  116. v1 = v[1];
  117. t1 = *tau * v1;
  118. v2 = v[2];
  119. t2 = *tau * v2;
  120. i__1 = *n;
  121. for (j = 1; j <= i__1; ++j) {
  122. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2];
  123. c__[j * c_dim1 + 1] -= sum * t1;
  124. c__[j * c_dim1 + 2] -= sum * t2;
  125. /* L40: */
  126. }
  127. goto L410;
  128. L50:
  129. /* Special code for 3 x 3 Householder */
  130. v1 = v[1];
  131. t1 = *tau * v1;
  132. v2 = v[2];
  133. t2 = *tau * v2;
  134. v3 = v[3];
  135. t3 = *tau * v3;
  136. i__1 = *n;
  137. for (j = 1; j <= i__1; ++j) {
  138. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  139. c__[j * c_dim1 + 3];
  140. c__[j * c_dim1 + 1] -= sum * t1;
  141. c__[j * c_dim1 + 2] -= sum * t2;
  142. c__[j * c_dim1 + 3] -= sum * t3;
  143. /* L60: */
  144. }
  145. goto L410;
  146. L70:
  147. /* Special code for 4 x 4 Householder */
  148. v1 = v[1];
  149. t1 = *tau * v1;
  150. v2 = v[2];
  151. t2 = *tau * v2;
  152. v3 = v[3];
  153. t3 = *tau * v3;
  154. v4 = v[4];
  155. t4 = *tau * v4;
  156. i__1 = *n;
  157. for (j = 1; j <= i__1; ++j) {
  158. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  159. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4];
  160. c__[j * c_dim1 + 1] -= sum * t1;
  161. c__[j * c_dim1 + 2] -= sum * t2;
  162. c__[j * c_dim1 + 3] -= sum * t3;
  163. c__[j * c_dim1 + 4] -= sum * t4;
  164. /* L80: */
  165. }
  166. goto L410;
  167. L90:
  168. /* Special code for 5 x 5 Householder */
  169. v1 = v[1];
  170. t1 = *tau * v1;
  171. v2 = v[2];
  172. t2 = *tau * v2;
  173. v3 = v[3];
  174. t3 = *tau * v3;
  175. v4 = v[4];
  176. t4 = *tau * v4;
  177. v5 = v[5];
  178. t5 = *tau * v5;
  179. i__1 = *n;
  180. for (j = 1; j <= i__1; ++j) {
  181. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  182. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  183. j * c_dim1 + 5];
  184. c__[j * c_dim1 + 1] -= sum * t1;
  185. c__[j * c_dim1 + 2] -= sum * t2;
  186. c__[j * c_dim1 + 3] -= sum * t3;
  187. c__[j * c_dim1 + 4] -= sum * t4;
  188. c__[j * c_dim1 + 5] -= sum * t5;
  189. /* L100: */
  190. }
  191. goto L410;
  192. L110:
  193. /* Special code for 6 x 6 Householder */
  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. v4 = v[4];
  201. t4 = *tau * v4;
  202. v5 = v[5];
  203. t5 = *tau * v5;
  204. v6 = v[6];
  205. t6 = *tau * v6;
  206. i__1 = *n;
  207. for (j = 1; j <= i__1; ++j) {
  208. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  209. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  210. j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6];
  211. c__[j * c_dim1 + 1] -= sum * t1;
  212. c__[j * c_dim1 + 2] -= sum * t2;
  213. c__[j * c_dim1 + 3] -= sum * t3;
  214. c__[j * c_dim1 + 4] -= sum * t4;
  215. c__[j * c_dim1 + 5] -= sum * t5;
  216. c__[j * c_dim1 + 6] -= sum * t6;
  217. /* L120: */
  218. }
  219. goto L410;
  220. L130:
  221. /* Special code for 7 x 7 Householder */
  222. v1 = v[1];
  223. t1 = *tau * v1;
  224. v2 = v[2];
  225. t2 = *tau * v2;
  226. v3 = v[3];
  227. t3 = *tau * v3;
  228. v4 = v[4];
  229. t4 = *tau * v4;
  230. v5 = v[5];
  231. t5 = *tau * v5;
  232. v6 = v[6];
  233. t6 = *tau * v6;
  234. v7 = v[7];
  235. t7 = *tau * v7;
  236. i__1 = *n;
  237. for (j = 1; j <= i__1; ++j) {
  238. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  239. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  240. j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j *
  241. c_dim1 + 7];
  242. c__[j * c_dim1 + 1] -= sum * t1;
  243. c__[j * c_dim1 + 2] -= sum * t2;
  244. c__[j * c_dim1 + 3] -= sum * t3;
  245. c__[j * c_dim1 + 4] -= sum * t4;
  246. c__[j * c_dim1 + 5] -= sum * t5;
  247. c__[j * c_dim1 + 6] -= sum * t6;
  248. c__[j * c_dim1 + 7] -= sum * t7;
  249. /* L140: */
  250. }
  251. goto L410;
  252. L150:
  253. /* Special code for 8 x 8 Householder */
  254. v1 = v[1];
  255. t1 = *tau * v1;
  256. v2 = v[2];
  257. t2 = *tau * v2;
  258. v3 = v[3];
  259. t3 = *tau * v3;
  260. v4 = v[4];
  261. t4 = *tau * v4;
  262. v5 = v[5];
  263. t5 = *tau * v5;
  264. v6 = v[6];
  265. t6 = *tau * v6;
  266. v7 = v[7];
  267. t7 = *tau * v7;
  268. v8 = v[8];
  269. t8 = *tau * v8;
  270. i__1 = *n;
  271. for (j = 1; j <= i__1; ++j) {
  272. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  273. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  274. j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j *
  275. c_dim1 + 7] + v8 * c__[j * c_dim1 + 8];
  276. c__[j * c_dim1 + 1] -= sum * t1;
  277. c__[j * c_dim1 + 2] -= sum * t2;
  278. c__[j * c_dim1 + 3] -= sum * t3;
  279. c__[j * c_dim1 + 4] -= sum * t4;
  280. c__[j * c_dim1 + 5] -= sum * t5;
  281. c__[j * c_dim1 + 6] -= sum * t6;
  282. c__[j * c_dim1 + 7] -= sum * t7;
  283. c__[j * c_dim1 + 8] -= sum * t8;
  284. /* L160: */
  285. }
  286. goto L410;
  287. L170:
  288. /* Special code for 9 x 9 Householder */
  289. v1 = v[1];
  290. t1 = *tau * v1;
  291. v2 = v[2];
  292. t2 = *tau * v2;
  293. v3 = v[3];
  294. t3 = *tau * v3;
  295. v4 = v[4];
  296. t4 = *tau * v4;
  297. v5 = v[5];
  298. t5 = *tau * v5;
  299. v6 = v[6];
  300. t6 = *tau * v6;
  301. v7 = v[7];
  302. t7 = *tau * v7;
  303. v8 = v[8];
  304. t8 = *tau * v8;
  305. v9 = v[9];
  306. t9 = *tau * v9;
  307. i__1 = *n;
  308. for (j = 1; j <= i__1; ++j) {
  309. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  310. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  311. j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j *
  312. c_dim1 + 7] + v8 * c__[j * c_dim1 + 8] + v9 * c__[j *
  313. c_dim1 + 9];
  314. c__[j * c_dim1 + 1] -= sum * t1;
  315. c__[j * c_dim1 + 2] -= sum * t2;
  316. c__[j * c_dim1 + 3] -= sum * t3;
  317. c__[j * c_dim1 + 4] -= sum * t4;
  318. c__[j * c_dim1 + 5] -= sum * t5;
  319. c__[j * c_dim1 + 6] -= sum * t6;
  320. c__[j * c_dim1 + 7] -= sum * t7;
  321. c__[j * c_dim1 + 8] -= sum * t8;
  322. c__[j * c_dim1 + 9] -= sum * t9;
  323. /* L180: */
  324. }
  325. goto L410;
  326. L190:
  327. /* Special code for 10 x 10 Householder */
  328. v1 = v[1];
  329. t1 = *tau * v1;
  330. v2 = v[2];
  331. t2 = *tau * v2;
  332. v3 = v[3];
  333. t3 = *tau * v3;
  334. v4 = v[4];
  335. t4 = *tau * v4;
  336. v5 = v[5];
  337. t5 = *tau * v5;
  338. v6 = v[6];
  339. t6 = *tau * v6;
  340. v7 = v[7];
  341. t7 = *tau * v7;
  342. v8 = v[8];
  343. t8 = *tau * v8;
  344. v9 = v[9];
  345. t9 = *tau * v9;
  346. v10 = v[10];
  347. t10 = *tau * v10;
  348. i__1 = *n;
  349. for (j = 1; j <= i__1; ++j) {
  350. sum = v1 * c__[j * c_dim1 + 1] + v2 * c__[j * c_dim1 + 2] + v3 *
  351. c__[j * c_dim1 + 3] + v4 * c__[j * c_dim1 + 4] + v5 * c__[
  352. j * c_dim1 + 5] + v6 * c__[j * c_dim1 + 6] + v7 * c__[j *
  353. c_dim1 + 7] + v8 * c__[j * c_dim1 + 8] + v9 * c__[j *
  354. c_dim1 + 9] + v10 * c__[j * c_dim1 + 10];
  355. c__[j * c_dim1 + 1] -= sum * t1;
  356. c__[j * c_dim1 + 2] -= sum * t2;
  357. c__[j * c_dim1 + 3] -= sum * t3;
  358. c__[j * c_dim1 + 4] -= sum * t4;
  359. c__[j * c_dim1 + 5] -= sum * t5;
  360. c__[j * c_dim1 + 6] -= sum * t6;
  361. c__[j * c_dim1 + 7] -= sum * t7;
  362. c__[j * c_dim1 + 8] -= sum * t8;
  363. c__[j * c_dim1 + 9] -= sum * t9;
  364. c__[j * c_dim1 + 10] -= sum * t10;
  365. /* L200: */
  366. }
  367. goto L410;
  368. } else {
  369. /* Form C * H, where H has order n. */
  370. switch (*n) {
  371. case 1: goto L210;
  372. case 2: goto L230;
  373. case 3: goto L250;
  374. case 4: goto L270;
  375. case 5: goto L290;
  376. case 6: goto L310;
  377. case 7: goto L330;
  378. case 8: goto L350;
  379. case 9: goto L370;
  380. case 10: goto L390;
  381. }
  382. /* Code for general N */
  383. _starpu_dlarf_(side, m, n, &v[1], &c__1, tau, &c__[c_offset], ldc, &work[1]);
  384. goto L410;
  385. L210:
  386. /* Special code for 1 x 1 Householder */
  387. t1 = 1. - *tau * v[1] * v[1];
  388. i__1 = *m;
  389. for (j = 1; j <= i__1; ++j) {
  390. c__[j + c_dim1] = t1 * c__[j + c_dim1];
  391. /* L220: */
  392. }
  393. goto L410;
  394. L230:
  395. /* Special code for 2 x 2 Householder */
  396. v1 = v[1];
  397. t1 = *tau * v1;
  398. v2 = v[2];
  399. t2 = *tau * v2;
  400. i__1 = *m;
  401. for (j = 1; j <= i__1; ++j) {
  402. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)];
  403. c__[j + c_dim1] -= sum * t1;
  404. c__[j + (c_dim1 << 1)] -= sum * t2;
  405. /* L240: */
  406. }
  407. goto L410;
  408. L250:
  409. /* Special code for 3 x 3 Householder */
  410. v1 = v[1];
  411. t1 = *tau * v1;
  412. v2 = v[2];
  413. t2 = *tau * v2;
  414. v3 = v[3];
  415. t3 = *tau * v3;
  416. i__1 = *m;
  417. for (j = 1; j <= i__1; ++j) {
  418. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  419. c__[j + c_dim1 * 3];
  420. c__[j + c_dim1] -= sum * t1;
  421. c__[j + (c_dim1 << 1)] -= sum * t2;
  422. c__[j + c_dim1 * 3] -= sum * t3;
  423. /* L260: */
  424. }
  425. goto L410;
  426. L270:
  427. /* Special code for 4 x 4 Householder */
  428. v1 = v[1];
  429. t1 = *tau * v1;
  430. v2 = v[2];
  431. t2 = *tau * v2;
  432. v3 = v[3];
  433. t3 = *tau * v3;
  434. v4 = v[4];
  435. t4 = *tau * v4;
  436. i__1 = *m;
  437. for (j = 1; j <= i__1; ++j) {
  438. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  439. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)];
  440. c__[j + c_dim1] -= sum * t1;
  441. c__[j + (c_dim1 << 1)] -= sum * t2;
  442. c__[j + c_dim1 * 3] -= sum * t3;
  443. c__[j + (c_dim1 << 2)] -= sum * t4;
  444. /* L280: */
  445. }
  446. goto L410;
  447. L290:
  448. /* Special code for 5 x 5 Householder */
  449. v1 = v[1];
  450. t1 = *tau * v1;
  451. v2 = v[2];
  452. t2 = *tau * v2;
  453. v3 = v[3];
  454. t3 = *tau * v3;
  455. v4 = v[4];
  456. t4 = *tau * v4;
  457. v5 = v[5];
  458. t5 = *tau * v5;
  459. i__1 = *m;
  460. for (j = 1; j <= i__1; ++j) {
  461. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  462. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  463. c__[j + c_dim1 * 5];
  464. c__[j + c_dim1] -= sum * t1;
  465. c__[j + (c_dim1 << 1)] -= sum * t2;
  466. c__[j + c_dim1 * 3] -= sum * t3;
  467. c__[j + (c_dim1 << 2)] -= sum * t4;
  468. c__[j + c_dim1 * 5] -= sum * t5;
  469. /* L300: */
  470. }
  471. goto L410;
  472. L310:
  473. /* Special code for 6 x 6 Householder */
  474. v1 = v[1];
  475. t1 = *tau * v1;
  476. v2 = v[2];
  477. t2 = *tau * v2;
  478. v3 = v[3];
  479. t3 = *tau * v3;
  480. v4 = v[4];
  481. t4 = *tau * v4;
  482. v5 = v[5];
  483. t5 = *tau * v5;
  484. v6 = v[6];
  485. t6 = *tau * v6;
  486. i__1 = *m;
  487. for (j = 1; j <= i__1; ++j) {
  488. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  489. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  490. c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6];
  491. c__[j + c_dim1] -= sum * t1;
  492. c__[j + (c_dim1 << 1)] -= sum * t2;
  493. c__[j + c_dim1 * 3] -= sum * t3;
  494. c__[j + (c_dim1 << 2)] -= sum * t4;
  495. c__[j + c_dim1 * 5] -= sum * t5;
  496. c__[j + c_dim1 * 6] -= sum * t6;
  497. /* L320: */
  498. }
  499. goto L410;
  500. L330:
  501. /* Special code for 7 x 7 Householder */
  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. v6 = v[6];
  513. t6 = *tau * v6;
  514. v7 = v[7];
  515. t7 = *tau * v7;
  516. i__1 = *m;
  517. for (j = 1; j <= i__1; ++j) {
  518. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  519. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  520. c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
  521. j + c_dim1 * 7];
  522. c__[j + c_dim1] -= sum * t1;
  523. c__[j + (c_dim1 << 1)] -= sum * t2;
  524. c__[j + c_dim1 * 3] -= sum * t3;
  525. c__[j + (c_dim1 << 2)] -= sum * t4;
  526. c__[j + c_dim1 * 5] -= sum * t5;
  527. c__[j + c_dim1 * 6] -= sum * t6;
  528. c__[j + c_dim1 * 7] -= sum * t7;
  529. /* L340: */
  530. }
  531. goto L410;
  532. L350:
  533. /* Special code for 8 x 8 Householder */
  534. v1 = v[1];
  535. t1 = *tau * v1;
  536. v2 = v[2];
  537. t2 = *tau * v2;
  538. v3 = v[3];
  539. t3 = *tau * v3;
  540. v4 = v[4];
  541. t4 = *tau * v4;
  542. v5 = v[5];
  543. t5 = *tau * v5;
  544. v6 = v[6];
  545. t6 = *tau * v6;
  546. v7 = v[7];
  547. t7 = *tau * v7;
  548. v8 = v[8];
  549. t8 = *tau * v8;
  550. i__1 = *m;
  551. for (j = 1; j <= i__1; ++j) {
  552. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  553. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  554. c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
  555. j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)];
  556. c__[j + c_dim1] -= sum * t1;
  557. c__[j + (c_dim1 << 1)] -= sum * t2;
  558. c__[j + c_dim1 * 3] -= sum * t3;
  559. c__[j + (c_dim1 << 2)] -= sum * t4;
  560. c__[j + c_dim1 * 5] -= sum * t5;
  561. c__[j + c_dim1 * 6] -= sum * t6;
  562. c__[j + c_dim1 * 7] -= sum * t7;
  563. c__[j + (c_dim1 << 3)] -= sum * t8;
  564. /* L360: */
  565. }
  566. goto L410;
  567. L370:
  568. /* Special code for 9 x 9 Householder */
  569. v1 = v[1];
  570. t1 = *tau * v1;
  571. v2 = v[2];
  572. t2 = *tau * v2;
  573. v3 = v[3];
  574. t3 = *tau * v3;
  575. v4 = v[4];
  576. t4 = *tau * v4;
  577. v5 = v[5];
  578. t5 = *tau * v5;
  579. v6 = v[6];
  580. t6 = *tau * v6;
  581. v7 = v[7];
  582. t7 = *tau * v7;
  583. v8 = v[8];
  584. t8 = *tau * v8;
  585. v9 = v[9];
  586. t9 = *tau * v9;
  587. i__1 = *m;
  588. for (j = 1; j <= i__1; ++j) {
  589. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  590. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  591. c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
  592. j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)] + v9 * c__[
  593. j + c_dim1 * 9];
  594. c__[j + c_dim1] -= sum * t1;
  595. c__[j + (c_dim1 << 1)] -= sum * t2;
  596. c__[j + c_dim1 * 3] -= sum * t3;
  597. c__[j + (c_dim1 << 2)] -= sum * t4;
  598. c__[j + c_dim1 * 5] -= sum * t5;
  599. c__[j + c_dim1 * 6] -= sum * t6;
  600. c__[j + c_dim1 * 7] -= sum * t7;
  601. c__[j + (c_dim1 << 3)] -= sum * t8;
  602. c__[j + c_dim1 * 9] -= sum * t9;
  603. /* L380: */
  604. }
  605. goto L410;
  606. L390:
  607. /* Special code for 10 x 10 Householder */
  608. v1 = v[1];
  609. t1 = *tau * v1;
  610. v2 = v[2];
  611. t2 = *tau * v2;
  612. v3 = v[3];
  613. t3 = *tau * v3;
  614. v4 = v[4];
  615. t4 = *tau * v4;
  616. v5 = v[5];
  617. t5 = *tau * v5;
  618. v6 = v[6];
  619. t6 = *tau * v6;
  620. v7 = v[7];
  621. t7 = *tau * v7;
  622. v8 = v[8];
  623. t8 = *tau * v8;
  624. v9 = v[9];
  625. t9 = *tau * v9;
  626. v10 = v[10];
  627. t10 = *tau * v10;
  628. i__1 = *m;
  629. for (j = 1; j <= i__1; ++j) {
  630. sum = v1 * c__[j + c_dim1] + v2 * c__[j + (c_dim1 << 1)] + v3 *
  631. c__[j + c_dim1 * 3] + v4 * c__[j + (c_dim1 << 2)] + v5 *
  632. c__[j + c_dim1 * 5] + v6 * c__[j + c_dim1 * 6] + v7 * c__[
  633. j + c_dim1 * 7] + v8 * c__[j + (c_dim1 << 3)] + v9 * c__[
  634. j + c_dim1 * 9] + v10 * c__[j + c_dim1 * 10];
  635. c__[j + c_dim1] -= sum * t1;
  636. c__[j + (c_dim1 << 1)] -= sum * t2;
  637. c__[j + c_dim1 * 3] -= sum * t3;
  638. c__[j + (c_dim1 << 2)] -= sum * t4;
  639. c__[j + c_dim1 * 5] -= sum * t5;
  640. c__[j + c_dim1 * 6] -= sum * t6;
  641. c__[j + c_dim1 * 7] -= sum * t7;
  642. c__[j + (c_dim1 << 3)] -= sum * t8;
  643. c__[j + c_dim1 * 9] -= sum * t9;
  644. c__[j + c_dim1 * 10] -= sum * t10;
  645. /* L400: */
  646. }
  647. goto L410;
  648. }
  649. L410:
  650. return 0;
  651. /* End of DLARFX */
  652. } /* _starpu_dlarfx_ */