35 #ifndef TEMPLATE_LAPACK_GGEV_HEADER
36 #define TEMPLATE_LAPACK_GGEV_HEADER
41 a,
const integer *lda, Treal *b,
const integer *ldb, Treal *alphar,
42 Treal *alphai, Treal *beta, Treal *vl,
const integer *ldvl,
187 integer a_dim1, a_offset, b_dim1, b_offset, vl_dim1, vl_offset, vr_dim1,
188 vr_offset, i__1, i__2;
189 Treal d__1, d__2, d__3, d__4;
204 integer ijobvl, iright, ijobvr;
205 Treal anrmto, bnrmto;
212 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1]
213 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1]
214 #define vl_ref(a_1,a_2) vl[(a_2)*vl_dim1 + a_1]
215 #define vr_ref(a_1,a_2) vr[(a_2)*vr_dim1 + a_1]
219 a_offset = 1 + a_dim1 * 1;
222 b_offset = 1 + b_dim1 * 1;
228 vl_offset = 1 + vl_dim1 * 1;
231 vr_offset = 1 + vr_dim1 * 1;
264 lquery = *lwork == -1;
267 }
else if (ijobvr <= 0) {
275 }
else if (*ldvl < 1 || ( ilvl && *ldvl < *n ) ) {
277 }
else if (*ldvr < 1 || ( ilvr && *ldvr < *n ) ) {
290 if (*info == 0 && (*lwork >= 1 || lquery)) {
294 i__1 = 1, i__2 = *n << 3;
296 work[1] = (Treal) maxwrk;
299 if (*lwork < minwrk && ! lquery) {
321 bignum = 1. / smlnum;
324 bignum = 1. / smlnum;
330 if (anrm > 0. && anrm < smlnum) {
333 }
else if (anrm > bignum) {
346 if (bnrm > 0. && bnrm < smlnum) {
349 }
else if (bnrm > bignum) {
365 ileft], &work[iright], &work[iwrk], &ierr);
370 irows = ihi + 1 - ilo;
372 icols = *n + 1 - ilo;
378 i__1 = *lwork + 1 - iwrk;
385 i__1 = *lwork + 1 - iwrk;
387 char str_L[] = {
'L', 0};
388 char str_T[] = {
'T', 0};
390 itau], &
a_ref(ilo, ilo), lda, &work[iwrk], &i__1, &ierr);
402 i__1 = *lwork + 1 - iwrk;
404 &work[iwrk], &i__1, &ierr);
422 ldb, &vl[vl_offset], ldvl, &vr[vr_offset], ldvr, &ierr);
425 b_ref(ilo, ilo), ldb, &vl[vl_offset], ldvl, &vr[vr_offset],
435 *(
unsigned char *)chtemp =
'S';
437 *(
unsigned char *)chtemp =
'E';
439 i__1 = *lwork + 1 - iwrk;
441 b_offset], ldb, &alphar[1], &alphai[1], &beta[1], &vl[vl_offset],
442 ldvl, &vr[vr_offset], ldvr, &work[iwrk], &i__1, &ierr);
444 if (ierr > 0 && ierr <= *n) {
446 }
else if (ierr > *n && ierr <= *n << 1) {
460 *(
unsigned char *)chtemp =
'B';
462 *(
unsigned char *)chtemp =
'L';
465 *(
unsigned char *)chtemp =
'R';
468 &vl[vl_offset], ldvl, &vr[vr_offset], ldvr, n, &in, &work[
480 vl[vl_offset], ldvl, &ierr);
482 for (jc = 1; jc <= i__1; ++jc) {
483 if (alphai[jc] < 0.) {
487 if (alphai[jc] == 0.) {
489 for (jr = 1; jr <= i__2; ++jr) {
498 for (jr = 1; jr <= i__2; ++jr) {
510 if (alphai[jc] == 0.) {
512 for (jr = 1; jr <= i__2; ++jr) {
518 for (jr = 1; jr <= i__2; ++jr) {
530 vr[vr_offset], ldvr, &ierr);
532 for (jc = 1; jc <= i__1; ++jc) {
533 if (alphai[jc] < 0.) {
537 if (alphai[jc] == 0.) {
539 for (jr = 1; jr <= i__2; ++jr) {
548 for (jr = 1; jr <= i__2; ++jr) {
560 if (alphai[jc] == 0.) {
562 for (jr = 1; jr <= i__2; ++jr) {
568 for (jr = 1; jr <= i__2; ++jr) {
599 work[1] = (Treal) maxwrk;