00001 /* ========================================================================== */ 00002 /* === umfpack_symbolic ===================================================== */ 00003 /* ========================================================================== */ 00004 00005 /* -------------------------------------------------------------------------- */ 00006 /* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ 00007 /* Davis. All Rights Reserved. See ../README for License. */ 00008 /* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ 00009 /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ 00010 /* -------------------------------------------------------------------------- */ 00011 00012 int umfpack_di_symbolic 00013 ( 00014 int n_row, 00015 int n_col, 00016 const int Ap [ ], 00017 const int Ai [ ], 00018 const double Ax [ ], 00019 void **Symbolic, 00020 const double Control [UMFPACK_CONTROL], 00021 double Info [UMFPACK_INFO] 00022 ) ; 00023 00024 long umfpack_dl_symbolic 00025 ( 00026 long n_row, 00027 long n_col, 00028 const long Ap [ ], 00029 const long Ai [ ], 00030 const double Ax [ ], 00031 void **Symbolic, 00032 const double Control [UMFPACK_CONTROL], 00033 double Info [UMFPACK_INFO] 00034 ) ; 00035 00036 int umfpack_zi_symbolic 00037 ( 00038 int n_row, 00039 int n_col, 00040 const int Ap [ ], 00041 const int Ai [ ], 00042 const double Ax [ ], const double Az [ ], 00043 void **Symbolic, 00044 const double Control [UMFPACK_CONTROL], 00045 double Info [UMFPACK_INFO] 00046 ) ; 00047 00048 long umfpack_zl_symbolic 00049 ( 00050 long n_row, 00051 long n_col, 00052 const long Ap [ ], 00053 const long Ai [ ], 00054 const double Ax [ ], const double Az [ ], 00055 void **Symbolic, 00056 const double Control [UMFPACK_CONTROL], 00057 double Info [UMFPACK_INFO] 00058 ) ; 00059 00060 /* 00061 double int Syntax: 00062 00063 #include "umfpack.h" 00064 void *Symbolic ; 00065 int n_row, n_col, *Ap, *Ai, status ; 00066 double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax ; 00067 status = umfpack_di_symbolic (n_row, n_col, Ap, Ai, Ax, 00068 &Symbolic, Control, Info) ; 00069 00070 double long Syntax: 00071 00072 #include "umfpack.h" 00073 void *Symbolic ; 00074 long n_row, n_col, *Ap, *Ai, status ; 00075 double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax ; 00076 status = umfpack_dl_symbolic (n_row, n_col, Ap, Ai, Ax, 00077 &Symbolic, Control, Info) ; 00078 00079 complex int Syntax: 00080 00081 #include "umfpack.h" 00082 void *Symbolic ; 00083 int n_row, n_col, *Ap, *Ai, status ; 00084 double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax, *Az ; 00085 status = umfpack_zi_symbolic (n_row, n_col, Ap, Ai, Ax, Az, 00086 &Symbolic, Control, Info) ; 00087 00088 complex long Syntax: 00089 00090 #include "umfpack.h" 00091 void *Symbolic ; 00092 long n_row, n_col, *Ap, *Ai, status ; 00093 double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax, *Az ; 00094 status = umfpack_zl_symbolic (n_row, n_col, Ap, Ai, Ax, Az, 00095 &Symbolic, Control, Info) ; 00096 00097 Purpose: 00098 00099 Given nonzero pattern of a sparse matrix A in column-oriented form, 00100 umfpack_*_symbolic performs a column pre-ordering to reduce fill-in 00101 (using COLAMD or AMD) and a symbolic factorization. This is required 00102 before the matrix can be numerically factorized with umfpack_*_numeric. 00103 If you wish to bypass the COLAMD or AMD pre-ordering and provide your own 00104 ordering, use umfpack_*_qsymbolic instead. 00105 00106 Since umfpack_*_symbolic and umfpack_*_qsymbolic are very similar, options 00107 for both routines are discussed below. 00108 00109 For the following discussion, let S be the submatrix of A obtained after 00110 eliminating all pivots of zero Markowitz cost. S has dimension 00111 (n_row-n1-nempty_row) -by- (n_col-n1-nempty_col), where 00112 n1 = Info [UMFPACK_COL_SINGLETONS] + Info [UMFPACK_ROW_SINGLETONS], 00113 nempty_row = Info [UMFPACK_NEMPTY_ROW] and 00114 nempty_col = Info [UMFPACK_NEMPTY_COL]. 00115 00116 Returns: 00117 00118 The status code is returned. See Info [UMFPACK_STATUS], below. 00119 00120 Arguments: 00121 00122 Int n_row ; Input argument, not modified. 00123 Int n_col ; Input argument, not modified. 00124 00125 A is an n_row-by-n_col matrix. Restriction: n_row > 0 and n_col > 0. 00126 00127 Int Ap [n_col+1] ; Input argument, not modified. 00128 00129 Ap is an integer array of size n_col+1. On input, it holds the 00130 "pointers" for the column form of the sparse matrix A. Column j of 00131 the matrix A is held in Ai [(Ap [j]) ... (Ap [j+1]-1)]. The first 00132 entry, Ap [0], must be zero, and Ap [j] <= Ap [j+1] must hold for all 00133 j in the range 0 to n_col-1. The value nz = Ap [n_col] is thus the 00134 total number of entries in the pattern of the matrix A. nz must be 00135 greater than or equal to zero. 00136 00137 Int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. 00138 00139 The nonzero pattern (row indices) for column j is stored in 00140 Ai [(Ap [j]) ... (Ap [j+1]-1)]. The row indices in a given column j 00141 must be in ascending order, and no duplicate row indices may be present. 00142 Row indices must be in the range 0 to n_row-1 (the matrix is 0-based). 00143 See umfpack_*_triplet_to_col for how to sort the columns of a matrix 00144 and sum up the duplicate entries. See umfpack_*_report_matrix for how 00145 to print the matrix A. 00146 00147 double Ax [nz] ; Optional input argument, not modified. 00148 00149 The numerical values of the sparse matrix A. The nonzero pattern (row 00150 indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and 00151 the corresponding numerical values are stored in 00152 Ax [(Ap [j]) ... (Ap [j+1]-1)]. Used only by the 2-by-2 strategy to 00153 determine whether entries are "large" or "small". You do not have to 00154 pass the same numerical values to umfpack_*_numeric. If Ax is not 00155 present (a (double *) NULL pointer), then any entry in A is assumed to 00156 be "large". 00157 00158 double Az [nz] ; Optional input argument, not modified, for complex 00159 versions. 00160 00161 For the complex versions, this holds the imaginary part of A. The 00162 imaginary part of column j is held in Az [(Ap [j]) ... (Ap [j+1]-1)]. 00163 00164 Future complex version: if Ax is present and Az is NULL, then both real 00165 and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] 00166 and Ax[2*k+1] being the real and imaginary part of the kth entry. 00167 00168 Used by the 2-by-2 strategy only. See the description of Ax, above. 00169 00170 void **Symbolic ; Output argument. 00171 00172 **Symbolic is the address of a (void *) pointer variable in the user's 00173 calling routine (see Syntax, above). On input, the contents of this 00174 variable are not defined. On output, this variable holds a (void *) 00175 pointer to the Symbolic object (if successful), or (void *) NULL if 00176 a failure occurred. 00177 00178 double Control [UMFPACK_CONTROL] ; Input argument, not modified. 00179 00180 If a (double *) NULL pointer is passed, then the default control 00181 settings are used (the defaults are suitable for all matrices, 00182 ranging from those with highly unsymmetric nonzero pattern, to 00183 symmetric matrices). Otherwise, the settings are determined from the 00184 Control array. See umfpack_*_defaults on how to fill the Control 00185 array with the default settings. If Control contains NaN's, the 00186 defaults are used. The following Control parameters are used: 00187 00188 Control [UMFPACK_STRATEGY]: This is the most important control 00189 parameter. It determines what kind of ordering and pivoting 00190 strategy that UMFPACK should use. It is new to Version 4.1 00191 There are 4 options: 00192 00193 UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is 00194 analyzed to determine how symmetric the nonzero pattern is, and 00195 how many entries there are on the diagonal. It then selects one 00196 of the following strategies. Refer to the User Guide for a 00197 description of how the strategy is automatically selected. 00198 00199 UMFPACK_STRATEGY_UNSYMMETRIC: Use the unsymmetric strategy. COLAMD 00200 is used to order the columns of A, followed by a postorder of 00201 the column elimination tree. No attempt is made to perform 00202 diagonal pivoting. The column ordering is refined during 00203 factorization. This strategy was the only one provided with 00204 UMFPACK V4.0. 00205 00206 In the numerical factorization, the 00207 Control [UMFPACK_SYM_PIVOT_TOLERANCE] parameter is ignored. A 00208 pivot is selected if its magnitude is >= 00209 Control [UMFPACK_PIVOT_TOLERANCE] (default 0.1) times the 00210 largest entry in its column. 00211 00212 UMFPACK_STRATEGY_SYMMETRIC: Use the symmetric strategy (new to 00213 Version 4.1). In this method, the approximate minimum degree 00214 ordering (AMD) is applied to A+A', followed by a postorder of 00215 the elimination tree of A+A'. UMFPACK attempts to perform 00216 diagonal pivoting during numerical factorization. No refinement 00217 of the column pre-ordering is performed during factorization. 00218 00219 In the numerical factorization, a nonzero entry on the diagonal 00220 is selected as the pivot if its magnitude is >= Control 00221 [UMFPACK_SYM_PIVOT_TOLERANCE] (default 0.001) times the largest 00222 entry in its column. If this is not acceptable, then an 00223 off-diagonal pivot is selected with magnitude >= Control 00224 [UMFPACK_PIVOT_TOLERANCE] (default 0.1) times the largest entry 00225 in its column. 00226 00227 UMFPACK_STRATEGY_2BY2: a row permutation P2 is found that places 00228 large entries on the diagonal. The matrix P2*A is then 00229 factorized using the symmetric strategy, described above. 00230 Refer to the User Guide for more information. 00231 00232 Control [UMFPACK_DENSE_COL]: 00233 If COLAMD is used, columns with more than 00234 max (16, Control [UMFPACK_DENSE_COL] * 16 * sqrt (n_row)) entries 00235 are placed placed last in the column pre-ordering. Default: 0.2. 00236 00237 Control [UMFPACK_DENSE_ROW]: 00238 Rows with more than max (16, Control [UMFPACK_DENSE_ROW] * 16 * 00239 sqrt (n_col)) entries are treated differently in the COLAMD 00240 pre-ordering, and in the internal data structures during the 00241 subsequent numeric factorization. Default: 0.2. 00242 00243 Control [UMFPACK_AMD_DENSE]: rows/columns in A+A' with more than 00244 max (16, Control [UMFPACK_AMD_DENSE] * sqrt (n)) entries 00245 (where n = n_row = n_col) are ignored in the AMD pre-ordering. 00246 Default: 10. 00247 00248 Control [UMFPACK_BLOCK_SIZE]: the block size to use for Level-3 BLAS 00249 in the subsequent numerical factorization (umfpack_*_numeric). 00250 A value less than 1 is treated as 1. Default: 32. Modifying this 00251 parameter affects when updates are applied to the working frontal 00252 matrix, and can indirectly affect fill-in and operation count. 00253 As long as the block size is large enough (8 or so), this parameter 00254 has a modest effect on performance. 00255 00256 Control [UMFPACK_2BY2_TOLERANCE]: a diagonal entry S (k,k) is 00257 considered "small" if it is < tol * max (abs (S (:,k))), where S a 00258 submatrix of the scaled input matrix, with pivots of zero Markowitz 00259 cost removed. 00260 00261 Control [UMFPACK_SCALE]: This parameter is new to V4.1. See 00262 umfpack_numeric.h for a description. Only affects the 2-by-2 00263 strategy. Default: UMFPACK_SCALE_SUM. 00264 00265 Control [UMFPACK_FIXQ]: If > 0, then the pre-ordering Q is not modified 00266 during numeric factorization. If < 0, then Q may be modified. If 00267 zero, then this is controlled automatically (the unsymmetric 00268 strategy modifies Q, the others do not). Default: 0. 00269 00270 Control [UMFPACK_AGGRESSIVE]: If nonzero, aggressive absorption is used 00271 in COLAMD and AMD. Default: 1. 00272 00273 double Info [UMFPACK_INFO] ; Output argument, not defined on input. 00274 00275 Contains statistics about the symbolic analysis. If a (double *) NULL 00276 pointer is passed, then no statistics are returned in Info (this is not 00277 an error condition). The entire Info array is cleared (all entries set 00278 to -1) and then the following statistics are computed: 00279 00280 Info [UMFPACK_STATUS]: status code. This is also the return value, 00281 whether or not Info is present. 00282 00283 UMFPACK_OK 00284 00285 Each column of the input matrix contained row indices 00286 in increasing order, with no duplicates. Only in this case 00287 does umfpack_*_symbolic compute a valid symbolic factorization. 00288 For the other cases below, no Symbolic object is created 00289 (*Symbolic is (void *) NULL). 00290 00291 UMFPACK_ERROR_n_nonpositive 00292 00293 n is less than or equal to zero. 00294 00295 UMFPACK_ERROR_invalid_matrix 00296 00297 Number of entries in the matrix is negative, Ap [0] is nonzero, 00298 a column has a negative number of entries, a row index is out of 00299 bounds, or the columns of input matrix were jumbled (unsorted 00300 columns or duplicate entries). 00301 00302 UMFPACK_ERROR_out_of_memory 00303 00304 Insufficient memory to perform the symbolic analysis. If the 00305 analysis requires more than 2GB of memory and you are using 00306 the 32-bit ("int") version of UMFPACK, then you are guaranteed 00307 to run out of memory. Try using the 64-bit version of UMFPACK. 00308 00309 UMFPACK_ERROR_argument_missing 00310 00311 One or more required arguments is missing. 00312 00313 UMFPACK_ERROR_internal_error 00314 00315 Something very serious went wrong. This is a bug. 00316 Please contact the author (davis@cise.ufl.edu). 00317 00318 Note that the UMFPACK_ERROR_problem_too_large error code is no 00319 longer returned (it was in Version 4.0). 00320 00321 Info [UMFPACK_NROW]: the value of the input argument n_row. 00322 00323 Info [UMFPACK_NCOL]: the value of the input argument n_col. 00324 00325 Info [UMFPACK_NZ]: the number of entries in the input matrix 00326 (Ap [n_col]). 00327 00328 Info [UMFPACK_SIZE_OF_UNIT]: the number of bytes in a Unit, 00329 for memory usage statistics below. 00330 00331 Info [UMFPACK_SIZE_OF_INT]: the number of bytes in an int. 00332 00333 Info [UMFPACK_SIZE_OF_LONG]: the number of bytes in a long. 00334 00335 Info [UMFPACK_SIZE_OF_POINTER]: the number of bytes in a void * 00336 pointer. 00337 00338 Info [UMFPACK_SIZE_OF_ENTRY]: the number of bytes in a numerical entry. 00339 00340 Info [UMFPACK_NDENSE_ROW]: number of "dense" rows in A. These rows are 00341 ignored when the column pre-ordering is computed in COLAMD. They 00342 are also treated differently during numeric factorization. If > 0, 00343 then the matrix had to be re-analyzed by UMF_analyze, which does 00344 not ignore these rows. 00345 00346 Info [UMFPACK_NEMPTY_ROW]: number of "empty" rows in A, as determined 00347 These are rows that either have no entries, or whose entries are 00348 all in pivot columns of zero-Markowitz-cost pivots. 00349 00350 Info [UMFPACK_NDENSE_COL]: number of "dense" columns in A. COLAMD 00351 orders these columns are ordered last in the factorization, but 00352 before "empty" columns. 00353 00354 Info [UMFPACK_NEMPTY_COL]: number of "empty" columns in A. These are 00355 columns that either have no entries, or whose entries are all in 00356 pivot rows of zero-Markowitz-cost pivots. These columns are 00357 ordered last in the factorization, to the right of "dense" columns. 00358 00359 Info [UMFPACK_SYMBOLIC_DEFRAG]: number of garbage collections 00360 performed during ordering and symbolic pre-analysis. 00361 00362 Info [UMFPACK_SYMBOLIC_PEAK_MEMORY]: the amount of memory (in Units) 00363 required for umfpack_*_symbolic to complete. This count includes 00364 the size of the Symbolic object itself, which is also reported in 00365 Info [UMFPACK_SYMBOLIC_SIZE]. 00366 00367 Info [UMFPACK_SYMBOLIC_SIZE]: the final size of the Symbolic object (in 00368 Units). This is fairly small, roughly 2*n to 13*n integers, 00369 depending on the matrix. 00370 00371 Info [UMFPACK_VARIABLE_INIT_ESTIMATE]: the Numeric object contains two 00372 parts. The first is fixed in size (O (n_row+n_col)). The 00373 second part holds the sparse LU factors and the contribution blocks 00374 from factorized frontal matrices. This part changes in size during 00375 factorization. Info [UMFPACK_VARIABLE_INIT_ESTIMATE] is the exact 00376 size (in Units) required for this second variable-sized part in 00377 order for the numerical factorization to start. 00378 00379 Info [UMFPACK_VARIABLE_PEAK_ESTIMATE]: the estimated peak size (in 00380 Units) of the variable-sized part of the Numeric object. This is 00381 usually an upper bound, but that is not guaranteed. 00382 00383 Info [UMFPACK_VARIABLE_FINAL_ESTIMATE]: the estimated final size (in 00384 Units) of the variable-sized part of the Numeric object. This is 00385 usually an upper bound, but that is not guaranteed. It holds just 00386 the sparse LU factors. 00387 00388 Info [UMFPACK_NUMERIC_SIZE_ESTIMATE]: an estimate of the final size (in 00389 Units) of the entire Numeric object (both fixed-size and variable- 00390 sized parts), which holds the LU factorization (including the L, U, 00391 P and Q matrices). 00392 00393 Info [UMFPACK_PEAK_MEMORY_ESTIMATE]: an estimate of the total amount of 00394 memory (in Units) required by umfpack_*_symbolic and 00395 umfpack_*_numeric to perform both the symbolic and numeric 00396 factorization. This is the larger of the amount of memory needed 00397 in umfpack_*_numeric itself, and the amount of memory needed in 00398 umfpack_*_symbolic (Info [UMFPACK_SYMBOLIC_PEAK_MEMORY]). The 00399 count includes the size of both the Symbolic and Numeric objects 00400 themselves. It can be a very loose upper bound, particularly when 00401 the symmetric or 2-by-2 strategies are used. 00402 00403 Info [UMFPACK_FLOPS_ESTIMATE]: an estimate of the total floating-point 00404 operations required to factorize the matrix. This is a "true" 00405 theoretical estimate of the number of flops that would be performed 00406 by a flop-parsimonious sparse LU algorithm. It assumes that no 00407 extra flops are performed except for what is strictly required to 00408 compute the LU factorization. It ignores, for example, the flops 00409 performed by umfpack_di_numeric to add contribution blocks of 00410 frontal matrices together. If L and U are the upper bound on the 00411 pattern of the factors, then this flop count estimate can be 00412 represented in MATLAB (for real matrices, not complex) as: 00413 00414 Lnz = full (sum (spones (L))) - 1 ; % nz in each col of L 00415 Unz = full (sum (spones (U')))' - 1 ; % nz in each row of U 00416 flops = 2*Lnz*Unz + sum (Lnz) ; 00417 00418 The actual "true flop" count found by umfpack_*_numeric will be 00419 less than this estimate. 00420 00421 For the real version, only (+ - * /) are counted. For the complex 00422 version, the following counts are used: 00423 00424 operation flops 00425 c = 1/b 6 00426 c = a*b 6 00427 c -= a*b 8 00428 00429 Info [UMFPACK_LNZ_ESTIMATE]: an estimate of the number of nonzeros in 00430 L, including the diagonal. Since L is unit-diagonal, the diagonal 00431 of L is not stored. This estimate is a strict upper bound on the 00432 actual nonzeros in L to be computed by umfpack_*_numeric. 00433 00434 Info [UMFPACK_UNZ_ESTIMATE]: an estimate of the number of nonzeros in 00435 U, including the diagonal. This estimate is a strict upper bound on 00436 the actual nonzeros in U to be computed by umfpack_*_numeric. 00437 00438 Info [UMFPACK_MAX_FRONT_SIZE_ESTIMATE]: estimate of the size of the 00439 largest frontal matrix (# of entries), for arbitrary partial 00440 pivoting during numerical factorization. 00441 00442 Info [UMFPACK_SYMBOLIC_TIME]: The CPU time taken, in seconds. 00443 00444 ------------------------------------------------------------------------ 00445 The rest of the statistics are new to Version 4.1: 00446 ------------------------------------------------------------------------ 00447 00448 Info [UMFPACK_SYMBOLIC_WALLTIME]: The wallclock time taken, in seconds. 00449 00450 Info [UMFPACK_STRATEGY_USED]: The ordering strategy used: 00451 UMFPACK_STRATEGY_SYMMETRIC, UMFPACK_STRATEGY_UNSYMMETRIC, or 00452 UMFPACK_STRATEGY_2BY2. 00453 00454 Info [UMFPACK_ORDERING_USED]: The ordering method used: 00455 UMFPACK_ORDERING_COLAMD or UMFPACK_ORDERING_AMD. It can be 00456 UMFPACK_ORDERING_GIVEN for umfpack_*_qsymbolic. 00457 00458 Info [UMFPACK_QFIXED]: 1 if the column pre-ordering will be refined 00459 during numerical factorization, 0 if not. 00460 00461 Info [UMFPACK_DIAG_PREFERED]: 1 if diagonal pivoting will be attempted, 00462 0 if not. 00463 00464 Info [UMFPACK_COL_SINGLETONS]: the matrix A is analyzed by first 00465 eliminating all pivots with zero Markowitz cost. This count is the 00466 number of these pivots with exactly one nonzero in their pivot 00467 column. 00468 00469 Info [UMFPACK_ROW_SINGLETONS]: the number of zero-Markowitz-cost 00470 pivots with exactly one nonzero in their pivot row. 00471 00472 Info [UMFPACK_PATTERN_SYMMETRY]: the symmetry of the pattern of S. 00473 00474 Info [UMFPACK_NZ_A_PLUS_AT]: the number of off-diagonal entries in S+S'. 00475 00476 Info [UMFPACK_NZDIAG]: the number of entries on the diagonal of S. 00477 00478 Info [UMFPACK_N2]: if S is square, and nempty_row = nempty_col, this 00479 is equal to n_row - n1 - nempty_row. 00480 00481 Info [UMFPACK_S_SYMMETRIC]: 1 if S is square and its diagonal has been 00482 preserved, 0 otherwise. 00483 00484 00485 Info [UMFPACK_MAX_FRONT_NROWS_ESTIMATE]: estimate of the max number of 00486 rows in any frontal matrix, for arbitrary partial pivoting. 00487 00488 Info [UMFPACK_MAX_FRONT_NCOLS_ESTIMATE]: estimate of the max number of 00489 columns in any frontal matrix, for arbitrary partial pivoting. 00490 00491 ------------------------------------------------------------------------ 00492 The next four statistics are computed only if AMD is used: 00493 ------------------------------------------------------------------------ 00494 00495 Info [UMFPACK_SYMMETRIC_LUNZ]: The number of nonzeros in L and U, 00496 assuming no pivoting during numerical factorization, and assuming a 00497 zero-free diagonal of U. Excludes the entries on the diagonal of 00498 L. If the matrix has a purely symmetric nonzero pattern, this is 00499 often a lower bound on the nonzeros in the actual L and U computed 00500 in the numerical factorization, for matrices that fit the criteria 00501 for the "symmetric" strategy. 00502 00503 Info [UMFPACK_SYMMETRIC_FLOPS]: The floating-point operation count in 00504 the numerical factorization phase, assuming no pivoting. If the 00505 pattern of the matrix is symmetric, this is normally a lower bound 00506 on the floating-point operation count in the actual numerical 00507 factorization, for matrices that fit the criteria for the symmetric 00508 or 2-by-2 strategies 00509 00510 Info [UMFPACK_SYMMETRIC_NDENSE]: The number of "dense" rows/columns of 00511 S+S' that were ignored during the AMD ordering. These are placed 00512 last in the output order. If > 0, then the 00513 Info [UMFPACK_SYMMETRIC_*] statistics, above are rough upper bounds. 00514 00515 Info [UMFPACK_SYMMETRIC_DMAX]: The maximum number of nonzeros in any 00516 column of L, if no pivoting is performed during numerical 00517 factorization. Excludes the part of the LU factorization for 00518 pivots with zero Markowitz cost. 00519 00520 ------------------------------------------------------------------------ 00521 The following statistics are computed only if the 2-by-2 strategy is 00522 used or attempted: 00523 ------------------------------------------------------------------------ 00524 00525 Info [UMFPACK_2BY2_NWEAK]: the number of small diagonal entries in S. 00526 00527 Info [UMFPACK_2BY2_UNMATCHED]: the number of small diagonal entries 00528 in P2*S. 00529 00530 Info [UMFPACK_2BY2_PATTERN_SYMMETRY]: the symmetry of P2*S. 00531 00532 Info [UMFPACK_2BY2_NZ_PA_PLUS_AT]: the number of off-diagonal entries 00533 in (P2*S)+(P2*S)'. 00534 00535 Info [UMFPACK_2BY2_NZDIAG]: the number of nonzero entries on the 00536 diagonal of P2*S. 00537 00538 00539 At the start of umfpack_*_symbolic, all of Info is set of -1, and then 00540 after that only the above listed Info [...] entries are accessed. 00541 Future versions might modify different parts of Info. 00542 */