00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "f2c.h"
00014 #include "blaswrap.h"
00015
00016
00017
00018 static complex c_b1 = {0.f,0.f};
00019 static complex c_b2 = {1.f,0.f};
00020 static integer c__1 = 1;
00021
00022 int clabrd_(integer *m, integer *n, integer *nb, complex *a,
00023 integer *lda, real *d__, real *e, complex *tauq, complex *taup,
00024 complex *x, integer *ldx, complex *y, integer *ldy)
00025 {
00026
00027 integer a_dim1, a_offset, x_dim1, x_offset, y_dim1, y_offset, i__1, i__2,
00028 i__3;
00029 complex q__1;
00030
00031
00032 integer i__;
00033 complex alpha;
00034 extern int cscal_(integer *, complex *, complex *,
00035 integer *), cgemv_(char *, integer *, integer *, complex *,
00036 complex *, integer *, complex *, integer *, complex *, complex *,
00037 integer *), clarfg_(integer *, complex *, complex *,
00038 integer *, complex *), clacgv_(integer *, complex *, integer *);
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185 a_dim1 = *lda;
00186 a_offset = 1 + a_dim1;
00187 a -= a_offset;
00188 --d__;
00189 --e;
00190 --tauq;
00191 --taup;
00192 x_dim1 = *ldx;
00193 x_offset = 1 + x_dim1;
00194 x -= x_offset;
00195 y_dim1 = *ldy;
00196 y_offset = 1 + y_dim1;
00197 y -= y_offset;
00198
00199
00200 if (*m <= 0 || *n <= 0) {
00201 return 0;
00202 }
00203
00204 if (*m >= *n) {
00205
00206
00207
00208 i__1 = *nb;
00209 for (i__ = 1; i__ <= i__1; ++i__) {
00210
00211
00212
00213 i__2 = i__ - 1;
00214 clacgv_(&i__2, &y[i__ + y_dim1], ldy);
00215 i__2 = *m - i__ + 1;
00216 i__3 = i__ - 1;
00217 q__1.r = -1.f, q__1.i = -0.f;
00218 cgemv_("No transpose", &i__2, &i__3, &q__1, &a[i__ + a_dim1], lda,
00219 &y[i__ + y_dim1], ldy, &c_b2, &a[i__ + i__ * a_dim1], &
00220 c__1);
00221 i__2 = i__ - 1;
00222 clacgv_(&i__2, &y[i__ + y_dim1], ldy);
00223 i__2 = *m - i__ + 1;
00224 i__3 = i__ - 1;
00225 q__1.r = -1.f, q__1.i = -0.f;
00226 cgemv_("No transpose", &i__2, &i__3, &q__1, &x[i__ + x_dim1], ldx,
00227 &a[i__ * a_dim1 + 1], &c__1, &c_b2, &a[i__ + i__ *
00228 a_dim1], &c__1);
00229
00230
00231
00232 i__2 = i__ + i__ * a_dim1;
00233 alpha.r = a[i__2].r, alpha.i = a[i__2].i;
00234 i__2 = *m - i__ + 1;
00235
00236 i__3 = i__ + 1;
00237 clarfg_(&i__2, &alpha, &a[min(i__3, *m)+ i__ * a_dim1], &c__1, &
00238 tauq[i__]);
00239 i__2 = i__;
00240 d__[i__2] = alpha.r;
00241 if (i__ < *n) {
00242 i__2 = i__ + i__ * a_dim1;
00243 a[i__2].r = 1.f, a[i__2].i = 0.f;
00244
00245
00246
00247 i__2 = *m - i__ + 1;
00248 i__3 = *n - i__;
00249 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &a[i__ + (
00250 i__ + 1) * a_dim1], lda, &a[i__ + i__ * a_dim1], &
00251 c__1, &c_b1, &y[i__ + 1 + i__ * y_dim1], &c__1);
00252 i__2 = *m - i__ + 1;
00253 i__3 = i__ - 1;
00254 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &a[i__ +
00255 a_dim1], lda, &a[i__ + i__ * a_dim1], &c__1, &c_b1, &
00256 y[i__ * y_dim1 + 1], &c__1);
00257 i__2 = *n - i__;
00258 i__3 = i__ - 1;
00259 q__1.r = -1.f, q__1.i = -0.f;
00260 cgemv_("No transpose", &i__2, &i__3, &q__1, &y[i__ + 1 +
00261 y_dim1], ldy, &y[i__ * y_dim1 + 1], &c__1, &c_b2, &y[
00262 i__ + 1 + i__ * y_dim1], &c__1);
00263 i__2 = *m - i__ + 1;
00264 i__3 = i__ - 1;
00265 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &x[i__ +
00266 x_dim1], ldx, &a[i__ + i__ * a_dim1], &c__1, &c_b1, &
00267 y[i__ * y_dim1 + 1], &c__1);
00268 i__2 = i__ - 1;
00269 i__3 = *n - i__;
00270 q__1.r = -1.f, q__1.i = -0.f;
00271 cgemv_("Conjugate transpose", &i__2, &i__3, &q__1, &a[(i__ +
00272 1) * a_dim1 + 1], lda, &y[i__ * y_dim1 + 1], &c__1, &
00273 c_b2, &y[i__ + 1 + i__ * y_dim1], &c__1);
00274 i__2 = *n - i__;
00275 cscal_(&i__2, &tauq[i__], &y[i__ + 1 + i__ * y_dim1], &c__1);
00276
00277
00278
00279 i__2 = *n - i__;
00280 clacgv_(&i__2, &a[i__ + (i__ + 1) * a_dim1], lda);
00281 clacgv_(&i__, &a[i__ + a_dim1], lda);
00282 i__2 = *n - i__;
00283 q__1.r = -1.f, q__1.i = -0.f;
00284 cgemv_("No transpose", &i__2, &i__, &q__1, &y[i__ + 1 +
00285 y_dim1], ldy, &a[i__ + a_dim1], lda, &c_b2, &a[i__ + (
00286 i__ + 1) * a_dim1], lda);
00287 clacgv_(&i__, &a[i__ + a_dim1], lda);
00288 i__2 = i__ - 1;
00289 clacgv_(&i__2, &x[i__ + x_dim1], ldx);
00290 i__2 = i__ - 1;
00291 i__3 = *n - i__;
00292 q__1.r = -1.f, q__1.i = -0.f;
00293 cgemv_("Conjugate transpose", &i__2, &i__3, &q__1, &a[(i__ +
00294 1) * a_dim1 + 1], lda, &x[i__ + x_dim1], ldx, &c_b2, &
00295 a[i__ + (i__ + 1) * a_dim1], lda);
00296 i__2 = i__ - 1;
00297 clacgv_(&i__2, &x[i__ + x_dim1], ldx);
00298
00299
00300
00301 i__2 = i__ + (i__ + 1) * a_dim1;
00302 alpha.r = a[i__2].r, alpha.i = a[i__2].i;
00303 i__2 = *n - i__;
00304
00305 i__3 = i__ + 2;
00306 clarfg_(&i__2, &alpha, &a[i__ + min(i__3, *n)* a_dim1], lda, &
00307 taup[i__]);
00308 i__2 = i__;
00309 e[i__2] = alpha.r;
00310 i__2 = i__ + (i__ + 1) * a_dim1;
00311 a[i__2].r = 1.f, a[i__2].i = 0.f;
00312
00313
00314
00315 i__2 = *m - i__;
00316 i__3 = *n - i__;
00317 cgemv_("No transpose", &i__2, &i__3, &c_b2, &a[i__ + 1 + (i__
00318 + 1) * a_dim1], lda, &a[i__ + (i__ + 1) * a_dim1],
00319 lda, &c_b1, &x[i__ + 1 + i__ * x_dim1], &c__1);
00320 i__2 = *n - i__;
00321 cgemv_("Conjugate transpose", &i__2, &i__, &c_b2, &y[i__ + 1
00322 + y_dim1], ldy, &a[i__ + (i__ + 1) * a_dim1], lda, &
00323 c_b1, &x[i__ * x_dim1 + 1], &c__1);
00324 i__2 = *m - i__;
00325 q__1.r = -1.f, q__1.i = -0.f;
00326 cgemv_("No transpose", &i__2, &i__, &q__1, &a[i__ + 1 +
00327 a_dim1], lda, &x[i__ * x_dim1 + 1], &c__1, &c_b2, &x[
00328 i__ + 1 + i__ * x_dim1], &c__1);
00329 i__2 = i__ - 1;
00330 i__3 = *n - i__;
00331 cgemv_("No transpose", &i__2, &i__3, &c_b2, &a[(i__ + 1) *
00332 a_dim1 + 1], lda, &a[i__ + (i__ + 1) * a_dim1], lda, &
00333 c_b1, &x[i__ * x_dim1 + 1], &c__1);
00334 i__2 = *m - i__;
00335 i__3 = i__ - 1;
00336 q__1.r = -1.f, q__1.i = -0.f;
00337 cgemv_("No transpose", &i__2, &i__3, &q__1, &x[i__ + 1 +
00338 x_dim1], ldx, &x[i__ * x_dim1 + 1], &c__1, &c_b2, &x[
00339 i__ + 1 + i__ * x_dim1], &c__1);
00340 i__2 = *m - i__;
00341 cscal_(&i__2, &taup[i__], &x[i__ + 1 + i__ * x_dim1], &c__1);
00342 i__2 = *n - i__;
00343 clacgv_(&i__2, &a[i__ + (i__ + 1) * a_dim1], lda);
00344 }
00345
00346 }
00347 } else {
00348
00349
00350
00351 i__1 = *nb;
00352 for (i__ = 1; i__ <= i__1; ++i__) {
00353
00354
00355
00356 i__2 = *n - i__ + 1;
00357 clacgv_(&i__2, &a[i__ + i__ * a_dim1], lda);
00358 i__2 = i__ - 1;
00359 clacgv_(&i__2, &a[i__ + a_dim1], lda);
00360 i__2 = *n - i__ + 1;
00361 i__3 = i__ - 1;
00362 q__1.r = -1.f, q__1.i = -0.f;
00363 cgemv_("No transpose", &i__2, &i__3, &q__1, &y[i__ + y_dim1], ldy,
00364 &a[i__ + a_dim1], lda, &c_b2, &a[i__ + i__ * a_dim1],
00365 lda);
00366 i__2 = i__ - 1;
00367 clacgv_(&i__2, &a[i__ + a_dim1], lda);
00368 i__2 = i__ - 1;
00369 clacgv_(&i__2, &x[i__ + x_dim1], ldx);
00370 i__2 = i__ - 1;
00371 i__3 = *n - i__ + 1;
00372 q__1.r = -1.f, q__1.i = -0.f;
00373 cgemv_("Conjugate transpose", &i__2, &i__3, &q__1, &a[i__ *
00374 a_dim1 + 1], lda, &x[i__ + x_dim1], ldx, &c_b2, &a[i__ +
00375 i__ * a_dim1], lda);
00376 i__2 = i__ - 1;
00377 clacgv_(&i__2, &x[i__ + x_dim1], ldx);
00378
00379
00380
00381 i__2 = i__ + i__ * a_dim1;
00382 alpha.r = a[i__2].r, alpha.i = a[i__2].i;
00383 i__2 = *n - i__ + 1;
00384
00385 i__3 = i__ + 1;
00386 clarfg_(&i__2, &alpha, &a[i__ + min(i__3, *n)* a_dim1], lda, &
00387 taup[i__]);
00388 i__2 = i__;
00389 d__[i__2] = alpha.r;
00390 if (i__ < *m) {
00391 i__2 = i__ + i__ * a_dim1;
00392 a[i__2].r = 1.f, a[i__2].i = 0.f;
00393
00394
00395
00396 i__2 = *m - i__;
00397 i__3 = *n - i__ + 1;
00398 cgemv_("No transpose", &i__2, &i__3, &c_b2, &a[i__ + 1 + i__ *
00399 a_dim1], lda, &a[i__ + i__ * a_dim1], lda, &c_b1, &x[
00400 i__ + 1 + i__ * x_dim1], &c__1);
00401 i__2 = *n - i__ + 1;
00402 i__3 = i__ - 1;
00403 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &y[i__ +
00404 y_dim1], ldy, &a[i__ + i__ * a_dim1], lda, &c_b1, &x[
00405 i__ * x_dim1 + 1], &c__1);
00406 i__2 = *m - i__;
00407 i__3 = i__ - 1;
00408 q__1.r = -1.f, q__1.i = -0.f;
00409 cgemv_("No transpose", &i__2, &i__3, &q__1, &a[i__ + 1 +
00410 a_dim1], lda, &x[i__ * x_dim1 + 1], &c__1, &c_b2, &x[
00411 i__ + 1 + i__ * x_dim1], &c__1);
00412 i__2 = i__ - 1;
00413 i__3 = *n - i__ + 1;
00414 cgemv_("No transpose", &i__2, &i__3, &c_b2, &a[i__ * a_dim1 +
00415 1], lda, &a[i__ + i__ * a_dim1], lda, &c_b1, &x[i__ *
00416 x_dim1 + 1], &c__1);
00417 i__2 = *m - i__;
00418 i__3 = i__ - 1;
00419 q__1.r = -1.f, q__1.i = -0.f;
00420 cgemv_("No transpose", &i__2, &i__3, &q__1, &x[i__ + 1 +
00421 x_dim1], ldx, &x[i__ * x_dim1 + 1], &c__1, &c_b2, &x[
00422 i__ + 1 + i__ * x_dim1], &c__1);
00423 i__2 = *m - i__;
00424 cscal_(&i__2, &taup[i__], &x[i__ + 1 + i__ * x_dim1], &c__1);
00425 i__2 = *n - i__ + 1;
00426 clacgv_(&i__2, &a[i__ + i__ * a_dim1], lda);
00427
00428
00429
00430 i__2 = i__ - 1;
00431 clacgv_(&i__2, &y[i__ + y_dim1], ldy);
00432 i__2 = *m - i__;
00433 i__3 = i__ - 1;
00434 q__1.r = -1.f, q__1.i = -0.f;
00435 cgemv_("No transpose", &i__2, &i__3, &q__1, &a[i__ + 1 +
00436 a_dim1], lda, &y[i__ + y_dim1], ldy, &c_b2, &a[i__ +
00437 1 + i__ * a_dim1], &c__1);
00438 i__2 = i__ - 1;
00439 clacgv_(&i__2, &y[i__ + y_dim1], ldy);
00440 i__2 = *m - i__;
00441 q__1.r = -1.f, q__1.i = -0.f;
00442 cgemv_("No transpose", &i__2, &i__, &q__1, &x[i__ + 1 +
00443 x_dim1], ldx, &a[i__ * a_dim1 + 1], &c__1, &c_b2, &a[
00444 i__ + 1 + i__ * a_dim1], &c__1);
00445
00446
00447
00448 i__2 = i__ + 1 + i__ * a_dim1;
00449 alpha.r = a[i__2].r, alpha.i = a[i__2].i;
00450 i__2 = *m - i__;
00451
00452 i__3 = i__ + 2;
00453 clarfg_(&i__2, &alpha, &a[min(i__3, *m)+ i__ * a_dim1], &c__1,
00454 &tauq[i__]);
00455 i__2 = i__;
00456 e[i__2] = alpha.r;
00457 i__2 = i__ + 1 + i__ * a_dim1;
00458 a[i__2].r = 1.f, a[i__2].i = 0.f;
00459
00460
00461
00462 i__2 = *m - i__;
00463 i__3 = *n - i__;
00464 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &a[i__ + 1
00465 + (i__ + 1) * a_dim1], lda, &a[i__ + 1 + i__ * a_dim1]
00466 , &c__1, &c_b1, &y[i__ + 1 + i__ * y_dim1], &c__1);
00467 i__2 = *m - i__;
00468 i__3 = i__ - 1;
00469 cgemv_("Conjugate transpose", &i__2, &i__3, &c_b2, &a[i__ + 1
00470 + a_dim1], lda, &a[i__ + 1 + i__ * a_dim1], &c__1, &
00471 c_b1, &y[i__ * y_dim1 + 1], &c__1);
00472 i__2 = *n - i__;
00473 i__3 = i__ - 1;
00474 q__1.r = -1.f, q__1.i = -0.f;
00475 cgemv_("No transpose", &i__2, &i__3, &q__1, &y[i__ + 1 +
00476 y_dim1], ldy, &y[i__ * y_dim1 + 1], &c__1, &c_b2, &y[
00477 i__ + 1 + i__ * y_dim1], &c__1);
00478 i__2 = *m - i__;
00479 cgemv_("Conjugate transpose", &i__2, &i__, &c_b2, &x[i__ + 1
00480 + x_dim1], ldx, &a[i__ + 1 + i__ * a_dim1], &c__1, &
00481 c_b1, &y[i__ * y_dim1 + 1], &c__1);
00482 i__2 = *n - i__;
00483 q__1.r = -1.f, q__1.i = -0.f;
00484 cgemv_("Conjugate transpose", &i__, &i__2, &q__1, &a[(i__ + 1)
00485 * a_dim1 + 1], lda, &y[i__ * y_dim1 + 1], &c__1, &
00486 c_b2, &y[i__ + 1 + i__ * y_dim1], &c__1);
00487 i__2 = *n - i__;
00488 cscal_(&i__2, &tauq[i__], &y[i__ + 1 + i__ * y_dim1], &c__1);
00489 } else {
00490 i__2 = *n - i__ + 1;
00491 clacgv_(&i__2, &a[i__ + i__ * a_dim1], lda);
00492 }
00493
00494 }
00495 }
00496 return 0;
00497
00498
00499
00500 }