📄 dlatmr.c
字号:
}/* L180: */ } } else if (ipack == 4) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { temp = dlatm3_(m, n, &i, &j, &isub, &jsub, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], & ipvtng, &iwork[1], sparse);/* Compute K = location of (I,J) entry in packed array */ mnsub = min(isub,jsub); mxsub = max(isub,jsub); if (mnsub == 1) { k = mxsub; } else { k = *n * (*n + 1) / 2 - (*n - mnsub + 1) * (*n - mnsub + 2) / 2 + mxsub - mnsub + 1; }/* Convert K to (IISUB,JJSUB) location */ jjsub = (k - 1) / *lda + 1; iisub = k - *lda * (jjsub - 1); a[iisub + jjsub * a_dim1] = temp;/* L190: */ }/* L200: */ } } 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) { a[j - i + 1 + (i + *n) * a_dim1] = 0.; } else { temp = dlatm3_(m, n, &i, &j, &isub, &jsub, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[ 1], &ipvtng, &iwork[1], sparse); mnsub = min(isub,jsub); mxsub = max(isub,jsub); a[mxsub - mnsub + 1 + mnsub * a_dim1] = temp; }/* L210: */ }/* L220: */ } } 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) { temp = dlatm3_(m, n, &i, &j, &isub, &jsub, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], & ipvtng, &iwork[1], sparse); mnsub = min(isub,jsub); mxsub = max(isub,jsub); a[mnsub - mxsub + kuu + 1 + mxsub * a_dim1] = temp;/* L230: */ }/* L240: */ } } else if (ipack == 7) { if (isym == 0) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = j - kuu; i <= i__2; ++i) { temp = dlatm3_(m, n, &i, &j, &isub, &jsub, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[ 1], &ipvtng, &iwork[1], sparse); mnsub = min(isub,jsub); mxsub = max(isub,jsub); a[mnsub - mxsub + kuu + 1 + mxsub * a_dim1] = temp; if (i < 1) { a[j - i + 1 + kuu + (i + *n) * a_dim1] = 0.; } if (i >= 1 && mnsub != mxsub) { a[mxsub - mnsub + 1 + kuu + mnsub * a_dim1] = temp; }/* L250: */ }/* L260: */ } } 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) { temp = dlatm3_(m, n, &i, &j, &isub, &jsub, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[ 1], &ipvtng, &iwork[1], sparse); a[isub - jsub + kuu + 1 + jsub * a_dim1] = temp;/* L270: */ }/* L280: */ } } } } else {/* Use DLATM2 */ if (ipack == 0) { if (isym == 0) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { a[i + j * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[ 1], &ipvtng, &iwork[1], sparse); a[j + i * a_dim1] = a[i + j * a_dim1];/* L290: */ }/* L300: */ } } else if (isym == 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = *m; for (i = 1; i <= i__2; ++i) { a[i + j * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[ 1], &ipvtng, &iwork[1], sparse);/* L310: */ }/* L320: */ } } } else if (ipack == 1) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { a[i + j * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], & ipvtng, &iwork[1], sparse); if (i != j) { a[j + i * a_dim1] = 0.; }/* L330: */ }/* L340: */ } } else if (ipack == 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = 1; i <= i__2; ++i) { a[j + i * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], & ipvtng, &iwork[1], sparse); if (i != j) { a[i + j * a_dim1] = 0.; }/* L350: */ }/* L360: */ } } 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; } a[isub + jsub * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, & idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse);/* L370: */ }/* L380: */ } } else if (ipack == 4) { if (isym == 0) { 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); a[isub + jsub * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse);/* L390: */ }/* L400: */ } } 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; } a[isub + jsub * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse);/* L410: */ }/* L420: */ } } } 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) { a[j - i + 1 + (i + *n) * a_dim1] = 0.; } else { a[j - i + 1 + i * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); }/* L430: */ }/* L440: */ } } 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) { a[i - j + kuu + 1 + j * a_dim1] = dlatm2_(m, n, &i, &j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse);/* L450: */ }/* L460: */ } } else if (ipack == 7) { if (isym == 0) { i__1 = *n; for (j = 1; j <= i__1; ++j) { i__2 = j; for (i = j - kuu; i <= i__2; ++i) { a[i - j + kuu + 1 + j * a_dim1] = dlatm2_(m, n, &i, & j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse); if (i < 1) { a[j - i + 1 + kuu + (i + *n) * a_dim1] = 0.; } if (i >= 1 && i != j) { a[j - i + 1 + kuu + i * a_dim1] = a[i - j + kuu + 1 + j * a_dim1]; }/* L470: */ }/* L480: */ } } 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) { a[i - j + kuu + 1 + j * a_dim1] = dlatm2_(m, n, &i, & j, kl, ku, &idist, &iseed[1], &d[1], &igrade, &dl[1], &dr[1], &ipvtng, &iwork[1], sparse);/* L490: */ }/* L500: */ } } } }/* 5) Scaling the norm */ if (ipack == 0) { onorm = dlange_("M", m, n, &a[a_offset], lda, tempa); } else if (ipack == 1) { onorm = dlansy_("M", "U", n, &a[a_offset], lda, tempa); } else if (ipack == 2) { onorm = dlansy_("M", "L", n, &a[a_offset], lda, tempa); } else if (ipack == 3) { onorm = dlansp_("M", "U", n, &a[a_offset], tempa); } else if (ipack == 4) { onorm = dlansp_("M", "L", n, &a[a_offset], tempa); } else if (ipack == 5) { onorm = dlansb_("M", "L", n, &kll, &a[a_offset], lda, tempa); } else if (ipack == 6) { onorm = dlansb_("M", "U", n, &kuu, &a[a_offset], lda, tempa); } else if (ipack == 7) { onorm = dlangb_("M", n, &kll, &kuu, &a[a_offset], lda, tempa); } if (*anorm >= 0.) { if (*anorm > 0. && onorm == 0.) {/* Desired scaling impossible */ *info = 5; return 0; } else if (*anorm > 1. && onorm < 1. || *anorm < 1. && onorm > 1.) {/* Scale carefully to avoid over / underflow */ if (ipack <= 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { d__1 = 1. / onorm; dscal_(m, &d__1, &a[j * a_dim1 + 1], &c__1); dscal_(m, anorm, &a[j * a_dim1 + 1], &c__1);/* L510: */ } } else if (ipack == 3 || ipack == 4) { i__1 = *n * (*n + 1) / 2; d__1 = 1. / onorm; dscal_(&i__1, &d__1, &a[a_offset], &c__1); i__1 = *n * (*n + 1) / 2; dscal_(&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; d__1 = 1. / onorm; dscal_(&i__2, &d__1, &a[j * a_dim1 + 1], &c__1); i__2 = kll + kuu + 1; dscal_(&i__2, anorm, &a[j * a_dim1 + 1], &c__1);/* L520: */ } } } else {/* Scale straightforwardly */ if (ipack <= 2) { i__1 = *n; for (j = 1; j <= i__1; ++j) { d__1 = *anorm / onorm; dscal_(m, &d__1, &a[j * a_dim1 + 1], &c__1);/* L530: */ } } else if (ipack == 3 || ipack == 4) { i__1 = *n * (*n + 1) / 2; d__1 = *anorm / onorm; dscal_(&i__1, &d__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; d__1 = *anorm / onorm; dscal_(&i__2, &d__1, &a[j * a_dim1 + 1], &c__1);/* L540: */ } } } }/* End of DLATMR */ return 0;} /* dlatmr_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -