196 integer a_dim1, a_offset, i__1, i__2, i__3;
198 integer i__, j, nb, kk, nx, iws;
199 extern logical lsame_(
char *,
char *);
203 int dsytd2_fla(
char *,
integer *,
doublereal *,
integer *,
doublereal *,
doublereal *,
doublereal *,
integer *), dsyr2k_(
char *,
char *,
integer *,
integer *,
doublereal *,
doublereal *,
integer *,
doublereal *,
integer *,
doublereal *,
doublereal *,
integer *), dlatrd_(
char *,
integer *,
integer *,
doublereal *,
integer *,
doublereal *,
doublereal *,
doublereal *,
integer *), xerbla_(
char *,
integer *);
230 a_offset = 1 + a_dim1;
238 upper = lsame_(uplo,
"U");
239 lquery = *lwork == -1;
240 if (! upper && ! lsame_(uplo,
"L"))
248 else if (*lda < max(1,*n))
252 else if (*lwork < 1 && ! lquery)
259 nb = ilaenv_(&c__1,
"DSYTRD", uplo, n, &c_n1, &c_n1, &c_n1);
266 xerbla_(
"DSYTRD", &i__1);
281 if (nb > 1 && nb < *n)
287 i__2 = ilaenv_(&c__3,
"DSYTRD", uplo, n, &c_n1, &c_n1, & c_n1);
300 i__1 = *lwork / ldwork;
302 nbmin = ilaenv_(&c__2,
"DSYTRD", uplo, n, &c_n1, &c_n1, &c_n1);
322 kk = *n - (*n - nx + nb - 1) / nb * nb;
325 for (i__ = *n - nb + 1;
326 i__2 < 0 ? i__ >= i__1 : i__ <= i__1;
333 dlatrd_(uplo, &i__3, &nb, &a[a_offset], lda, &e[1], &tau[1], & work[1], &ldwork);
337 dsyr2k_(uplo,
"No transpose", &i__3, &nb, &c_b22, &a[i__ * a_dim1 + 1], lda, &work[1], &ldwork, &c_b23, &a[a_offset], lda);
345 a[j - 1 + j * a_dim1] = e[j - 1];
346 d__[j] = a[j + j * a_dim1];
352 dsytd2_fla(uplo, &kk, &a[a_offset], lda, &d__[1], &e[1], &tau[1], &iinfo);
360 i__1 < 0 ? i__ >= i__2 : i__ <= i__2;
367 dlatrd_(uplo, &i__3, &nb, &a[i__ + i__ * a_dim1], lda, &e[i__], & tau[i__], &work[1], &ldwork);
370 i__3 = *n - i__ - nb + 1;
371 dsyr2k_(uplo,
"No transpose", &i__3, &nb, &c_b22, &a[i__ + nb + i__ * a_dim1], lda, &work[nb + 1], &ldwork, &c_b23, &a[ i__ + nb + (i__ + nb) * a_dim1], lda);
379 a[j + 1 + j * a_dim1] = e[j];
380 d__[j] = a[j + j * a_dim1];
387 dsytd2_fla(uplo, &i__1, &a[i__ + i__ * a_dim1], lda, &d__[i__], &e[i__], &tau[i__], &iinfo);
int dsytd2_fla(char *uplo, integer *n, doublereal *a, integer *lda, doublereal *d__, doublereal *e, doublereal *tau, integer *info)
Definition: dsytd2.c:169
double doublereal
Definition: FLA_f2c.h:31
int logical
Definition: FLA_f2c.h:36
int integer
Definition: FLA_f2c.h:25