📄 dgetdiagu.c
字号:
/* * -- Auxiliary routine in SuperLU (version 2.0) -- * Lawrence Berkeley National Lab, Univ. of California Berkeley. * Xiaoye S. Li * September 11, 2003 * */#include "dsp_defs.h"void dGetDiagU(SuperMatrix *L, double *diagU){ /* * Purpose * ======= * * GetDiagU extracts the main diagonal of matrix U of the LU factorization. * * Arguments * ========= * * L (input) SuperMatrix* * The factor L from the factorization Pr*A*Pc=L*U as computed by * dgstrf(). Use compressed row subscripts storage for supernodes, * i.e., L has types: Stype = SLU_SC, Dtype = SLU_D, Mtype = SLU_TRLU. * * diagU (output) double*, dimension (n) * The main diagonal of matrix U. * * Note * ==== * The diagonal blocks of the L and U matrices are stored in the L * data structures. * */ int_t i, k, nsupers; int_t fsupc, nsupr, nsupc, luptr; double *dblock, *Lval; SCformat *Lstore; Lstore = L->Store; Lval = Lstore->nzval; nsupers = Lstore->nsuper + 1; for (k = 0; k < nsupers; ++k) { fsupc = L_FST_SUPC(k); nsupc = L_FST_SUPC(k+1) - fsupc; nsupr = L_SUB_START(fsupc+1) - L_SUB_START(fsupc); luptr = L_NZ_START(fsupc); dblock = &diagU[fsupc]; for (i = 0; i < nsupc; ++i) { dblock[i] = Lval[luptr]; luptr += nsupr + 1; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -