📄 clatmr.c
字号:
iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; i__3 = j + i * a_dim1; r_cnjg(&q__1, &a[i + j * a_dim1]); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L320: */ }/* L330: */ } } else if (isym == 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = *m; for (i = 1; i <= i__2; ++i) { i__3 = i + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L340: */ }/* L350: */ } } else if (isym == 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { i__3 = i + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; i__3 = j + i * a_dim1; i__4 = i + j * a_dim1; a[i__3].r = a[i__4].r, a[i__3].i = a[i__4].i;/* L360: */ }/* L370: */ } } } else if (ipack == 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { i__3 = i + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1], & d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; if (i != j) { i__3 = j + i * a_dim1; a[i__3].r = 0.f, a[i__3].i = 0.f; }/* L380: */ }/* L390: */ } } else if (ipack == 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { if (isym == 0) { i__3 = j + i * a_dim1; clatm2_(&q__2, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); r_cnjg(&q__1, &q__2); a[i__3].r = q__1.r, a[i__3].i = q__1.i; } else { i__3 = j + i * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; } if (i != j) { i__3 = i + j * a_dim1; a[i__3].r = 0.f, a[i__3].i = 0.f; }/* L400: */ }/* L410: */ } } else if (ipack == 3) { isub = 0; jsub = 1; i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { ++isub; if (isub > *lda) { isub = 1; ++jsub; } i__3 = isub + jsub * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1], & d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L420: */ }/* L430: */ } } else if (ipack == 4) { if (isym == 0 || isym == 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) {/* Compute K = location of (I,J) entry in packed array */ if (i == 1) { k = j; } else { k = *n * (*n + 1) / 2 - (*n - i + 1) * (*n - i + 2) / 2 + j - i + 1; }/* Convert K to (ISUB,JSUB) location */ jsub = (k - 1) / *lda + 1; isub = k - *lda * (jsub - 1); i__3 = isub + jsub * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; if (isym == 0) { i__3 = isub + jsub * a_dim1; r_cnjg(&q__1, &a[isub + jsub * a_dim1]); a[i__3].r = q__1.r, a[i__3].i = q__1.i; }/* L440: */ }/* L450: */ } } else { isub = 0; jsub = 1; i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = *m; for (i = j; i <= i__2; ++i) { ++isub; if (isub > *lda) { isub = 1; ++jsub; } i__3 = isub + jsub * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L460: */ }/* L470: */ } } } else if (ipack == 5) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = j - kuu; i <= i__2; ++i) { if (i < 1) { i__3 = j - i + 1 + (i + *n) * a_dim1; a[i__3].r = 0.f, a[i__3].i = 0.f; } else { if (isym == 0) { i__3 = j - i + 1 + i * a_dim1; clatm2_(&q__2, m, n, &i, &j, kl, ku, &idist, & iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); r_cnjg(&q__1, &q__2); a[i__3].r = q__1.r, a[i__3].i = q__1.i; } else { i__3 = j - i + 1 + i * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, & iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; } }/* L480: */ }/* L490: */ } } else if (ipack == 6) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = j - kuu; i <= i__2; ++i) { i__3 = i - j + kuu + 1 + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1], & d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L500: */ }/* L510: */ } } else if (ipack == 7) { if (isym != 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = j - kuu; i <= i__2; ++i) { i__3 = i - j + kuu + 1 + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i; if (i < 1) { i__3 = j - i + 1 + kuu + (i + *n) * a_dim1; a[i__3].r = 0.f, a[i__3].i = 0.f; } if (i >= 1 && i != j) { if (isym == 0) { i__3 = j - i + 1 + kuu + i * a_dim1; r_cnjg(&q__1, &a[i - j + kuu + 1 + j * a_dim1] ); a[i__3].r = q__1.r, a[i__3].i = q__1.i; } else { i__3 = j - i + 1 + kuu + i * a_dim1; i__4 = i - j + kuu + 1 + j * a_dim1; a[i__3].r = a[i__4].r, a[i__3].i = a[i__4].i; } }/* L520: */ }/* L530: */ } } else if (isym == 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j + kll; for (i = j - kuu; i <= i__2; ++i) { i__3 = i - j + kuu + 1 + j * a_dim1; clatm2_(&q__1, m, n, &i, &j, kl, ku, &idist, &iseed[1] , &d[1], &igrade, &dl[1], &dr[1], &ipvtng, & iwork[1], sparse); a[i__3].r = q__1.r, a[i__3].i = q__1.i;/* L540: */ }/* L550: */ } } } }/* 5) Scaling the norm */ if (ipack == 0) { onorm = clange_("M", m, n, &a[a_offset], lda, tempa); } else if (ipack == 1) { onorm = clansy_("M", "U", n, &a[a_offset], lda, tempa); } else if (ipack == 2) { onorm = clansy_("M", "L", n, &a[a_offset], lda, tempa); } else if (ipack == 3) { onorm = clansp_("M", "U", n, &a[a_offset], tempa); } else if (ipack == 4) { onorm = clansp_("M", "L", n, &a[a_offset], tempa); } else if (ipack == 5) { onorm = clansb_("M", "L", n, &kll, &a[a_offset], lda, tempa); } else if (ipack == 6) { onorm = clansb_("M", "U", n, &kuu, &a[a_offset], lda, tempa); } else if (ipack == 7) { onorm = clangb_("M", n, &kll, &kuu, &a[a_offset], lda, tempa); } if (*anorm >= 0.f) { if (*anorm > 0.f && onorm == 0.f) {/* Desired scaling impossible */ *info = 5; return 0; } else if (*anorm > 1.f && onorm < 1.f || *anorm < 1.f && onorm > 1.f) {/* Scale carefully to avoid over / underflow */ if (ipack <= 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { r__1 = 1.f / onorm; csscal_(m, &r__1, &a[j * a_dim1 + 1], &c__1); csscal_(m, anorm, &a[j * a_dim1 + 1], &c__1);/* L560: */ } } else if (ipack == 3 || ipack == 4) { i__1 = *n * (*n + 1) / 2; r__1 = 1.f / onorm; csscal_(&i__1, &r__1, &a[a_offset], &c__1); i__1 = *n * (*n + 1) / 2; csscal_(&i__1, anorm, &a[a_offset], &c__1); } else if (ipack >= 5) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = kll + kuu + 1; r__1 = 1.f / onorm; csscal_(&i__2, &r__1, &a[j * a_dim1 + 1], &c__1); i__2 = kll + kuu + 1; csscal_(&i__2, anorm, &a[j * a_dim1 + 1], &c__1);/* L570: */ } } } else {/* Scale straightforwardly */ if (ipack <= 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { r__1 = *anorm / onorm; csscal_(m, &r__1, &a[j * a_dim1 + 1], &c__1);/* L580: */ } } else if (ipack == 3 || ipack == 4) { i__1 = *n * (*n + 1) / 2; r__1 = *anorm / onorm; csscal_(&i__1, &r__1, &a[a_offset], &c__1); } else if (ipack >= 5) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = kll + kuu + 1; r__1 = *anorm / onorm; csscal_(&i__2, &r__1, &a[j * a_dim1 + 1], &c__1);/* L590: */ } } } }/* End of CLATMR */ return 0;} /* clatmr_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -