Go to the documentation of this file.
37 #ifndef TEMPLATE_LAPACK_STEVR_HEADER
38 #define TEMPLATE_LAPACK_STEVR_HEADER
42 Treal * d__, Treal *e,
const Treal *vl,
43 const Treal *vu,
const integer *il,
44 const integer *iu,
const Treal *abstol,
52 integer z_dim1, z_offset, i__1, i__2;
59 Treal eps, vll, vuu, tmp1;
70 integer iscale, ieeeok, indibl, indifl;
305 z_offset = 1 + z_dim1;
319 lquery = *lwork == -1 || *liwork == -1;
321 i__1 = 1, i__2 = *n * 20;
324 i__1 = 1, i__2 = *n * 10;
331 }
else if (! (alleig || valeig || indeig)) {
337 if (*n > 0 && *vu <= *vl) {
341 if (*il < 1 || *il >
maxMACRO(1,*n)) {
343 }
else if (*iu <
minMACRO(*n,*il) || *iu > *n) {
349 if (*ldz < 1 || ( wantz && *ldz < *n ) ) {
355 work[1] = (Treal) lwmin;
358 if (*lwork < lwmin && ! lquery) {
360 }
else if (*liwork < liwmin && ! lquery) {
381 if (alleig || indeig) {
385 if (*vl < d__[1] && *vu >= d__[1]) {
391 z__[z_dim1 + 1] = 1.;
400 smlnum = safmin / eps;
401 bignum = 1. / smlnum;
415 if (tnrm > 0. && tnrm < rmin) {
418 }
else if (tnrm > rmax) {
438 indisp = indibl + *n;
443 indifl = indisp + *n;
445 indiwo = indisp + *n;
454 if (*il == 1 && *iu == *n) {
458 if ((alleig || test) && ieeeok == 1) {
466 if (*abstol <= *n * 2. * eps) {
471 i__1 = *lwork - (*n << 1);
472 template_lapack_stemr(jobz,
"A", n, &work[*n + 1], &work[1], vl, vu, il, iu, m,
473 &w[1], &z__[z_offset], ldz, n, &isuppz[1], &tryrac, &work[
474 (*n << 1) + 1], &i__1, &iwork[1], liwork, info);
487 *(
unsigned char *)order =
'B';
489 *(
unsigned char *)order =
'E';
491 template_lapack_stebz(range, order, n, &vll, &vuu, il, iu, abstol, &d__[1], &e[1], m, &
492 nsplit, &w[1], &iwork[indibl], &iwork[indisp], &work[1], &iwork[
497 z__[z_offset], ldz, &work[1], &iwork[indiwo], &iwork[indifl],
519 for (j = 1; j <= i__1; ++j) {
523 for (jj = j + 1; jj <= i__2; ++jj) {
534 iwork[i__] = iwork[j];
548 work[1] = (Treal) lwmin;
int template_blas_swap(const integer *n, Treal *dx, const integer *incx, Treal *dy, const integer *incy)
Definition: template_blas_swap.h:42
Treal template_blas_sqrt(Treal x)
int ftnlen
Definition: template_blas_common.h:42
int template_lapack_stemr(const char *jobz, const char *range, const integer *n, Treal *d__, Treal *e, const Treal *vl, const Treal *vu, const integer *il, const integer *iu, integer *m, Treal *w, Treal *z__, const integer *ldz, const integer *nzc, integer *isuppz, logical *tryrac, Treal *work, integer *lwork, integer *iwork, integer *liwork, integer *info)
Definition: template_lapack_stemr.h:41
int template_lapack_sterf(const integer *n, Treal *d__, Treal *e, integer *info)
Definition: template_lapack_sterf.h:43
integer template_lapack_ilaenv(const integer *ispec, const char *name__, const char *opts, const integer *n1, const integer *n2, const integer *n3, const integer *n4, ftnlen name_len, ftnlen opts_len)
Definition: template_lapack_common.cc:281
Treal template_lapack_lamch(const char *cmach, Treal dummyReal)
Definition: template_lapack_lamch.h:202
int template_blas_scal(const integer *n, const Treal *da, Treal *dx, const integer *incx)
Definition: template_blas_scal.h:43
#define minMACRO(a, b)
Definition: template_blas_common.h:46
Treal template_lapack_lanst(const char *norm, const integer *n, const Treal *d__, const Treal *e)
Definition: template_lapack_lanst.h:42
bool logical
Definition: template_blas_common.h:41
int template_blas_erbla(const char *srname, integer *info)
Definition: template_blas_common.cc:146
int template_blas_copy(const integer *n, const Treal *dx, const integer *incx, Treal *dy, const integer *incy)
Definition: template_blas_copy.h:42
logical template_blas_lsame(const char *ca, const char *cb)
Definition: template_blas_common.cc:46
#define TRUE_
Definition: template_lapack_common.h:42
int integer
Definition: template_blas_common.h:40
int template_lapack_stebz(const char *range, const char *order, const integer *n, const Treal *vl, const Treal *vu, const integer *il, const integer *iu, const Treal *abstol, const Treal *d__, const Treal *e, integer *m, integer *nsplit, Treal *w, integer *iblock, integer *isplit, Treal *work, integer *iwork, integer *info)
Definition: template_lapack_stebz.h:42
#define FALSE_
Definition: template_lapack_common.h:43
int template_lapack_stevr(const char *jobz, const char *range, const integer *n, Treal *d__, Treal *e, const Treal *vl, const Treal *vu, const integer *il, const integer *iu, const Treal *abstol, integer *m, Treal *w, Treal *z__, const integer *ldz, integer *isuppz, Treal *work, integer *lwork, integer *iwork, integer *liwork, integer *info)
Definition: template_lapack_stevr.h:41
#define maxMACRO(a, b)
Definition: template_blas_common.h:45
int template_lapack_stein(const integer *n, const Treal *d__, const Treal *e, const integer *m, const Treal *w, const integer *iblock, const integer *isplit, Treal *z__, const integer *ldz, Treal *work, integer *iwork, integer *ifail, integer *info)
Definition: template_lapack_stein.h:42