35 #ifndef TEMPLATE_LAPACK_LARRD_HEADER
36 #define TEMPLATE_LAPACK_LARRD_HEADER
41 Treal *reltol, Treal *d__, Treal *e, Treal *e2,
43 Treal *w, Treal *werr, Treal *wl, Treal *wu,
64 integer iend, jblk, ioff, iout, itmp1, itmp2, jdisc;
68 Treal wkill, rtoli, uflow, tnorm;
70 integer irange, idiscl, idumma[1];
329 }
else if (irange == 2) {
333 }
else if (irange == 3 && (*il < 1 || *il >
maxMACRO(1,*n))) {
335 }
else if (irange == 3 && (*iu <
minMACRO(*n,*il) || *iu > *n)) {
352 if (irange == 3 && *il == 1 && *iu == *n) {
361 if ( irange == 1 || ( irange == 2 && d__[1] > *vl && d__[1] <= *vu ) ||
362 ( irange == 3 && *il == 1 && *iu == 1 ) ) {
382 for (i__ = 1; i__ <= i__1; ++i__) {
384 d__1 = gl, d__2 = gers[(i__ << 1) - 1];
387 d__1 =
gu, d__2 = gers[i__ * 2];
395 gl = gl - tnorm * 2. * eps * *n - *pivmin * 4.;
396 gu = gu + tnorm * 2. * eps * *n + *pivmin * 4.;
409 atoli = uflow * 4. + *pivmin * 4.;
430 d__[1], &e[1], &e2[1], &iwork[5], &work[*n + 1], &work[*n + 5]
431 , &iout, &iwork[1], &w[1], &iblock[1], &iinfo);
437 if (iwork[6] == *iu) {
454 if (nwl < 0 || nwl >= *n || nwu < 1 || nwu > *n) {
458 }
else if (irange == 2) {
461 }
else if (irange == 1) {
475 for (jblk = 1; jblk <= i__1; ++jblk) {
483 if (*wl >= d__[ibegin] - *pivmin) {
486 if (*wu >= d__[ibegin] - *pivmin) {
489 if (irange == 1 || ( *wl < d__[ibegin] - *pivmin && *wu >= d__[
490 ibegin] - *pivmin ) ) {
553 for (j = ibegin; j <= i__2; ++j) {
555 d__1 = gl, d__2 = gers[(j << 1) - 1];
558 d__1 =
gu, d__2 = gers[j * 2];
568 gl = gl - tnorm * 2. * eps * in - *pivmin * 2.;
569 gu = gu + tnorm * 2. * eps * in + *pivmin * 2.;
587 work[*n + in + 1] =
gu;
589 pivmin, &d__[ibegin], &e[ibegin], &e2[ibegin], idumma, &
590 work[*n + 1], &work[*n + (in << 1) + 1], &im, &iwork[1], &
591 w[*m + 1], &iblock[*m + 1], &iinfo);
598 nwu += iwork[in + 1];
599 iwoff = *m - iwork[1];
604 pivmin, &d__[ibegin], &e[ibegin], &e2[ibegin], idumma, &
605 work[*n + 1], &work[*n + (in << 1) + 1], &iout, &iwork[1],
606 &w[*m + 1], &iblock[*m + 1], &iinfo);
616 for (j = 1; j <= i__2; ++j) {
618 tmp1 = (work[j + *n] + work[j + in + *n]) * .5;
620 tmp2 = (d__1 = work[j + *n] - work[j + in + *n],
absMACRO(d__1)) *
622 if (j > iout - iinfo) {
629 i__3 = iwork[j + in] + iwoff;
630 for (je = iwork[j] + 1 + iwoff; je <= i__3; ++je) {
633 indexw[je] = je - iwoff;
648 idiscl = *il - 1 - nwl;
654 for (je = 1; je <= i__1; ++je) {
657 if (w[je] <= wlu && idiscl > 0) {
663 indexw[im] = indexw[je];
664 iblock[im] = iblock[je];
674 for (je = *m; je >= 1; --je) {
675 if (w[je] >= wul && idiscu > 0) {
681 indexw[im] = indexw[je];
682 iblock[im] = iblock[je];
688 for (je = im; je <= i__1; ++je) {
691 werr[jee] = werr[je];
692 indexw[jee] = indexw[je];
693 iblock[jee] = iblock[je];
698 if (idiscl > 0 || idiscu > 0) {
708 for (jdisc = 1; jdisc <= i__1; ++jdisc) {
711 for (je = 1; je <= i__2; ++je) {
712 if (iblock[je] != 0 && (w[je] < wkill || iw == 0)) {
725 for (jdisc = 1; jdisc <= i__1; ++jdisc) {
728 for (je = 1; je <= i__2; ++je) {
729 if (iblock[je] != 0 && (w[je] >= wkill || iw == 0)) {
742 for (je = 1; je <= i__1; ++je) {
743 if (iblock[je] != 0) {
747 indexw[im] = indexw[je];
748 iblock[im] = iblock[je];
754 if (idiscl < 0 || idiscu < 0) {
759 if ( ( irange == 1 && *m != *n ) || ( irange == 3 && *m != *iu - *il + 1 ) ) {
767 for (je = 1; je <= i__1; ++je) {
771 for (j = je + 1; j <= i__2; ++j) {
784 iblock[ie] = iblock[je];
785 indexw[ie] = indexw[je];