35 #ifndef TEMPLATE_LAPACK_GGBAL_HEADER
36 #define TEMPLATE_LAPACK_GGBAL_HEADER
42 Treal *lscale, Treal *rscale, Treal *work,
integer *
148 integer a_dim1, a_offset, b_dim1, b_offset, i__1, i__2, i__3;
149 Treal d__1, d__2, d__3;
157 Treal gamma, t, alpha;
166 integer lsfmin, lsfmax, ip1, jp1, lm1;
167 Treal cab, rab, ewc, cor, sum;
169 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1]
170 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1]
174 a_offset = 1 + a_dim1 * 1;
177 b_offset = 1 + b_dim1 * 1;
216 for (i__ = 1; i__ <= i__1; ++i__) {
254 for (i__ = l; i__ >= 1; --i__) {
256 for (j = 1; j <= i__1; ++j) {
258 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
268 for (j = jp1; j <= i__1; ++j) {
269 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
292 for (j = k; j <= i__1; ++j) {
294 for (i__ = k; i__ <= i__2; ++i__) {
296 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
305 for (i__ = ip1; i__ <= i__2; ++i__) {
306 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
324 lscale[m] = (Treal) i__;
336 rscale[m] = (Treal) j;
363 nr = *ihi - *ilo + 1;
365 for (i__ = *ilo; i__ <= i__1; ++i__) {
371 work[i__ + (*n << 1)] = 0.;
372 work[i__ + *n * 3] = 0.;
373 work[i__ + (*n << 2)] = 0.;
374 work[i__ + *n * 5] = 0.;
382 for (i__ = *ilo; i__ <= i__1; ++i__) {
384 for (j = *ilo; j <= i__2; ++j) {
399 work[i__ + (*n << 2)] = work[i__ + (*n << 2)] - ta - tb;
400 work[j + *n * 5] = work[j + *n * 5] - ta - tb;
406 coef = 1. / (Treal) (nr << 1);
417 gamma =
template_blas_dot(&nr, &work[*ilo + (*n << 2)], &c__1, &work[*ilo + (*n << 2)]
424 for (i__ = *ilo; i__ <= i__1; ++i__) {
425 ew += work[i__ + (*n << 2)];
426 ewc += work[i__ + *n * 5];
436 gamma = coef * gamma - coef2 * (d__1 * d__1 + d__2 * d__2) - coef5 * (
442 beta = gamma / pgamma;
444 t = coef5 * (ewc - ew * 3.);
445 tc = coef5 * (ew - ewc * 3.);
455 for (i__ = *ilo; i__ <= i__1; ++i__) {
464 for (i__ = *ilo; i__ <= i__1; ++i__) {
468 for (j = *ilo; j <= i__2; ++j) {
469 if (
a_ref(i__, j) == 0.) {
475 if (
b_ref(i__, j) == 0.) {
483 work[i__ + (*n << 1)] = (Treal) kount * work[i__ + *n] + sum;
488 for (j = *ilo; j <= i__1; ++j) {
492 for (i__ = *ilo; i__ <= i__2; ++i__) {
493 if (
a_ref(i__, j) == 0.) {
497 sum += work[i__ + *n];
499 if (
b_ref(i__, j) == 0.) {
503 sum += work[i__ + *n];
507 work[j + *n * 3] = (Treal) kount * work[j] + sum;
511 sum =
template_blas_dot(&nr, &work[*ilo + *n], &c__1, &work[*ilo + (*n << 1)], &c__1)
519 for (i__ = *ilo; i__ <= i__1; ++i__) {
520 cor = alpha * work[i__ + *n];
525 cor = alpha * work[i__];
537 template_blas_axpy(&nr, &d__1, &work[*ilo + (*n << 1)], &c__1, &work[*ilo + (*n << 2)]
557 for (i__ = *ilo; i__ <= i__1; ++i__) {
558 i__2 = *n - *ilo + 1;
561 i__2 = *n - *ilo + 1;
564 d__2 = rab, d__3 = (d__1 =
b_ref(i__, irab + *ilo - 1),
absMACRO(d__1));
570 i__2 =
maxMACRO(ir,lsfmin), i__2 =
minMACRO(i__2,lsfmax), i__3 = lsfmax - lrab;
577 d__2 = cab, d__3 = (d__1 =
b_ref(icab, i__),
absMACRO(d__1));
583 i__2 =
maxMACRO(jc,lsfmin), i__2 =
minMACRO(i__2,lsfmax), i__3 = lsfmax - lcab;
592 for (i__ = *ilo; i__ <= i__1; ++i__) {
593 i__2 = *n - *ilo + 1;
595 i__2 = *n - *ilo + 1;
603 for (j = *ilo; j <= i__1; ++j) {