37 #ifndef TEMPLATE_LAPACK_GGBAL_HEADER
38 #define TEMPLATE_LAPACK_GGBAL_HEADER
44 Treal *lscale, Treal *rscale, Treal *work,
integer *
150 integer a_dim1, a_offset, b_dim1, b_offset, i__1, i__2, i__3;
151 Treal d__1, d__2, d__3;
159 Treal gamma, t, alpha;
168 integer lsfmin, lsfmax, ip1, jp1, lm1;
169 Treal cab, rab, ewc, cor, sum;
171 #define a_ref(a_1,a_2) a[(a_2)*a_dim1 + a_1]
172 #define b_ref(a_1,a_2) b[(a_2)*b_dim1 + a_1]
176 a_offset = 1 + a_dim1 * 1;
179 b_offset = 1 + b_dim1 * 1;
218 for (i__ = 1; i__ <= i__1; ++i__) {
256 for (i__ = l; i__ >= 1; --i__) {
258 for (j = 1; j <= i__1; ++j) {
260 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
270 for (j = jp1; j <= i__1; ++j) {
271 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
294 for (j = k; j <= i__1; ++j) {
296 for (i__ = k; i__ <= i__2; ++i__) {
298 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
307 for (i__ = ip1; i__ <= i__2; ++i__) {
308 if (
a_ref(i__, j) != 0. ||
b_ref(i__, j) != 0.) {
326 lscale[m] = (Treal) i__;
338 rscale[m] = (Treal) j;
365 nr = *ihi - *ilo + 1;
367 for (i__ = *ilo; i__ <= i__1; ++i__) {
373 work[i__ + (*n << 1)] = 0.;
374 work[i__ + *n * 3] = 0.;
375 work[i__ + (*n << 2)] = 0.;
376 work[i__ + *n * 5] = 0.;
384 for (i__ = *ilo; i__ <= i__1; ++i__) {
386 for (j = *ilo; j <= i__2; ++j) {
401 work[i__ + (*n << 2)] = work[i__ + (*n << 2)] - ta - tb;
402 work[j + *n * 5] = work[j + *n * 5] - ta - tb;
408 coef = 1. / (Treal) (nr << 1);
419 gamma =
template_blas_dot(&nr, &work[*ilo + (*n << 2)], &c__1, &work[*ilo + (*n << 2)]
426 for (i__ = *ilo; i__ <= i__1; ++i__) {
427 ew += work[i__ + (*n << 2)];
428 ewc += work[i__ + *n * 5];
438 gamma = coef * gamma - coef2 * (d__1 * d__1 + d__2 * d__2) - coef5 * (
444 beta = gamma / pgamma;
446 t = coef5 * (ewc - ew * 3.);
447 tc = coef5 * (ew - ewc * 3.);
457 for (i__ = *ilo; i__ <= i__1; ++i__) {
466 for (i__ = *ilo; i__ <= i__1; ++i__) {
470 for (j = *ilo; j <= i__2; ++j) {
471 if (
a_ref(i__, j) == 0.) {
477 if (
b_ref(i__, j) == 0.) {
485 work[i__ + (*n << 1)] = (Treal) kount * work[i__ + *n] + sum;
490 for (j = *ilo; j <= i__1; ++j) {
494 for (i__ = *ilo; i__ <= i__2; ++i__) {
495 if (
a_ref(i__, j) == 0.) {
499 sum += work[i__ + *n];
501 if (
b_ref(i__, j) == 0.) {
505 sum += work[i__ + *n];
509 work[j + *n * 3] = (Treal) kount * work[j] + sum;
513 sum =
template_blas_dot(&nr, &work[*ilo + *n], &c__1, &work[*ilo + (*n << 1)], &c__1)
521 for (i__ = *ilo; i__ <= i__1; ++i__) {
522 cor = alpha * work[i__ + *n];
527 cor = alpha * work[i__];
539 template_blas_axpy(&nr, &d__1, &work[*ilo + (*n << 1)], &c__1, &work[*ilo + (*n << 2)]
559 for (i__ = *ilo; i__ <= i__1; ++i__) {
560 i__2 = *n - *ilo + 1;
563 i__2 = *n - *ilo + 1;
566 d__2 = rab, d__3 = (d__1 =
b_ref(i__, irab + *ilo - 1),
absMACRO(d__1));
572 i__2 =
maxMACRO(ir,lsfmin), i__2 =
minMACRO(i__2,lsfmax), i__3 = lsfmax - lrab;
579 d__2 = cab, d__3 = (d__1 =
b_ref(icab, i__),
absMACRO(d__1));
585 i__2 =
maxMACRO(jc,lsfmin), i__2 =
minMACRO(i__2,lsfmax), i__3 = lsfmax - lcab;
594 for (i__ = *ilo; i__ <= i__1; ++i__) {
595 i__2 = *n - *ilo + 1;
597 i__2 = *n - *ilo + 1;
605 for (j = *ilo; j <= i__1; ++j) {