37 #ifndef TEMPLATE_LAPACK_GGEV_HEADER
38 #define TEMPLATE_LAPACK_GGEV_HEADER
43 a,
const integer *lda, Treal *b,
const integer *ldb, Treal *alphar,
44 Treal *alphai, Treal *beta, Treal *vl,
const integer *ldvl,
189 integer a_dim1, a_offset, b_dim1, b_offset, vl_dim1, vl_offset, vr_dim1,
190 vr_offset, i__1, i__2;
191 Treal d__1, d__2, d__3, d__4;
206 integer ijobvl, iright, ijobvr;
207 Treal anrmto, bnrmto;
214 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1]
215 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1]
216 #define vl_ref(a_1,a_2) vl[(a_2)*vl_dim1 + a_1]
217 #define vr_ref(a_1,a_2) vr[(a_2)*vr_dim1 + a_1]
221 a_offset = 1 + a_dim1 * 1;
224 b_offset = 1 + b_dim1 * 1;
230 vl_offset = 1 + vl_dim1 * 1;
233 vr_offset = 1 + vr_dim1 * 1;
266 lquery = *lwork == -1;
269 }
else if (ijobvr <= 0) {
277 }
else if (*ldvl < 1 || ( ilvl && *ldvl < *n ) ) {
279 }
else if (*ldvr < 1 || ( ilvr && *ldvr < *n ) ) {
292 if (*info == 0 && (*lwork >= 1 || lquery)) {
296 i__1 = 1, i__2 = *n << 3;
298 work[1] = (Treal) maxwrk;
301 if (*lwork < minwrk && ! lquery) {
323 bignum = 1. / smlnum;
326 bignum = 1. / smlnum;
332 if (anrm > 0. && anrm < smlnum) {
335 }
else if (anrm > bignum) {
348 if (bnrm > 0. && bnrm < smlnum) {
351 }
else if (bnrm > bignum) {
367 ileft], &work[iright], &work[iwrk], &ierr);
372 irows = ihi + 1 - ilo;
374 icols = *n + 1 - ilo;
380 i__1 = *lwork + 1 - iwrk;
387 i__1 = *lwork + 1 - iwrk;
389 char str_L[] = {
'L', 0};
390 char str_T[] = {
'T', 0};
392 itau], &
a_ref(ilo, ilo), lda, &work[iwrk], &i__1, &ierr);
404 i__1 = *lwork + 1 - iwrk;
406 &work[iwrk], &i__1, &ierr);
424 ldb, &vl[vl_offset], ldvl, &vr[vr_offset], ldvr, &ierr);
427 b_ref(ilo, ilo), ldb, &vl[vl_offset], ldvl, &vr[vr_offset],
437 *(
unsigned char *)chtemp =
'S';
439 *(
unsigned char *)chtemp =
'E';
441 i__1 = *lwork + 1 - iwrk;
443 b_offset], ldb, &alphar[1], &alphai[1], &beta[1], &vl[vl_offset],
444 ldvl, &vr[vr_offset], ldvr, &work[iwrk], &i__1, &ierr);
446 if (ierr > 0 && ierr <= *n) {
448 }
else if (ierr > *n && ierr <= *n << 1) {
462 *(
unsigned char *)chtemp =
'B';
464 *(
unsigned char *)chtemp =
'L';
467 *(
unsigned char *)chtemp =
'R';
470 &vl[vl_offset], ldvl, &vr[vr_offset], ldvr, n, &in, &work[
482 vl[vl_offset], ldvl, &ierr);
484 for (jc = 1; jc <= i__1; ++jc) {
485 if (alphai[jc] < 0.) {
489 if (alphai[jc] == 0.) {
491 for (jr = 1; jr <= i__2; ++jr) {
500 for (jr = 1; jr <= i__2; ++jr) {
512 if (alphai[jc] == 0.) {
514 for (jr = 1; jr <= i__2; ++jr) {
520 for (jr = 1; jr <= i__2; ++jr) {
532 vr[vr_offset], ldvr, &ierr);
534 for (jc = 1; jc <= i__1; ++jc) {
535 if (alphai[jc] < 0.) {
539 if (alphai[jc] == 0.) {
541 for (jr = 1; jr <= i__2; ++jr) {
550 for (jr = 1; jr <= i__2; ++jr) {
562 if (alphai[jc] == 0.) {
564 for (jr = 1; jr <= i__2; ++jr) {
570 for (jr = 1; jr <= i__2; ++jr) {
601 work[1] = (Treal) maxwrk;