00001 /* ========================================================================== */ 00002 /* === umfpack_numeric ====================================================== */ 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_numeric 00013 ( 00014 const int Ap [ ], 00015 const int Ai [ ], 00016 const double Ax [ ], 00017 void *Symbolic, 00018 void **Numeric, 00019 const double Control [UMFPACK_CONTROL], 00020 double Info [UMFPACK_INFO] 00021 ) ; 00022 00023 long umfpack_dl_numeric 00024 ( 00025 const long Ap [ ], 00026 const long Ai [ ], 00027 const double Ax [ ], 00028 void *Symbolic, 00029 void **Numeric, 00030 const double Control [UMFPACK_CONTROL], 00031 double Info [UMFPACK_INFO] 00032 ) ; 00033 00034 int umfpack_zi_numeric 00035 ( 00036 const int Ap [ ], 00037 const int Ai [ ], 00038 const double Ax [ ], const double Az [ ], 00039 void *Symbolic, 00040 void **Numeric, 00041 const double Control [UMFPACK_CONTROL], 00042 double Info [UMFPACK_INFO] 00043 ) ; 00044 00045 long umfpack_zl_numeric 00046 ( 00047 const long Ap [ ], 00048 const long Ai [ ], 00049 const double Ax [ ], const double Az [ ], 00050 void *Symbolic, 00051 void **Numeric, 00052 const double Control [UMFPACK_CONTROL], 00053 double Info [UMFPACK_INFO] 00054 ) ; 00055 00056 /* 00057 double int Syntax: 00058 00059 #include "umfpack.h" 00060 void *Symbolic, *Numeric ; 00061 int *Ap, *Ai, status ; 00062 double *Ax, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; 00063 status = umfpack_di_numeric (Ap, Ai, Ax, Symbolic, &Numeric, Control, Info); 00064 00065 double long Syntax: 00066 00067 #include "umfpack.h" 00068 void *Symbolic, *Numeric ; 00069 long *Ap, *Ai, status ; 00070 double *Ax, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; 00071 status = umfpack_dl_numeric (Ap, Ai, Ax, Symbolic, &Numeric, Control, Info); 00072 00073 complex int Syntax: 00074 00075 #include "umfpack.h" 00076 void *Symbolic, *Numeric ; 00077 int *Ap, *Ai, status ; 00078 double *Ax, *Az, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; 00079 status = umfpack_zi_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, 00080 Control, Info) ; 00081 00082 complex long Syntax: 00083 00084 #include "umfpack.h" 00085 void *Symbolic, *Numeric ; 00086 long *Ap, *Ai, status ; 00087 double *Ax, *Az, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; 00088 status = umfpack_zl_numeric (Ap, Ai, Ax, Symbolic, &Numeric, 00089 Control, Info) ; 00090 00091 Purpose: 00092 00093 Given a sparse matrix A in column-oriented form, and a symbolic analysis 00094 computed by umfpack_*_*symbolic, the umfpack_*_numeric routine performs the 00095 numerical factorization, PAQ=LU, PRAQ=LU, or P(R\A)Q=LU, where P and Q are 00096 permutation matrices (represented as permutation vectors), R is the row 00097 scaling, L is unit-lower triangular, and U is upper triangular. This is 00098 required before the system Ax=b (or other related linear systems) can be 00099 solved. umfpack_*_numeric can be called multiple times for each call to 00100 umfpack_*_*symbolic, to factorize a sequence of matrices with identical 00101 nonzero pattern. Simply compute the Symbolic object once, with 00102 umfpack_*_*symbolic, and reuse it for subsequent matrices. This routine 00103 safely detects if the pattern changes, and sets an appropriate error code. 00104 00105 Returns: 00106 00107 The status code is returned. See Info [UMFPACK_STATUS], below. 00108 00109 Arguments: 00110 00111 Int Ap [n_col+1] ; Input argument, not modified. 00112 00113 This must be identical to the Ap array passed to umfpack_*_*symbolic. 00114 The value of n_col is what was passed to umfpack_*_*symbolic (this is 00115 held in the Symbolic object). 00116 00117 Int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. 00118 00119 This must be identical to the Ai array passed to umfpack_*_*symbolic. 00120 00121 double Ax [nz] ; Input argument, not modified, of size nz = Ap [n_col]. 00122 00123 The numerical values of the sparse matrix A. The nonzero pattern (row 00124 indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and 00125 the corresponding numerical values are stored in 00126 Ax [(Ap [j]) ... (Ap [j+1]-1)]. 00127 00128 double Az [nz] ; Input argument, not modified, for complex versions. 00129 00130 For the complex versions, this holds the imaginary part of A. The 00131 imaginary part of column j is held in Az [(Ap [j]) ... (Ap [j+1]-1)]. 00132 00133 Future complex version: if Ax is present and Az is NULL, then both real 00134 and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] 00135 and Ax[2*k+1] being the real and imaginary part of the kth entry. 00136 00137 void *Symbolic ; Input argument, not modified. 00138 00139 The Symbolic object, which holds the symbolic factorization computed by 00140 umfpack_*_*symbolic. The Symbolic object is not modified by 00141 umfpack_*_numeric. 00142 00143 void **Numeric ; Output argument. 00144 00145 **Numeric is the address of a (void *) pointer variable in the user's 00146 calling routine (see Syntax, above). On input, the contents of this 00147 variable are not defined. On output, this variable holds a (void *) 00148 pointer to the Numeric object (if successful), or (void *) NULL if 00149 a failure occurred. 00150 00151 double Control [UMFPACK_CONTROL] ; Input argument, not modified. 00152 00153 If a (double *) NULL pointer is passed, then the default control 00154 settings are used. Otherwise, the settings are determined from the 00155 Control array. See umfpack_*_defaults on how to fill the Control 00156 array with the default settings. If Control contains NaN's, the 00157 defaults are used. The following Control parameters are used: 00158 00159 Control [UMFPACK_PIVOT_TOLERANCE]: relative pivot tolerance for 00160 threshold partial pivoting with row interchanges. In any given 00161 column, an entry is numerically acceptable if its absolute value is 00162 greater than or equal to Control [UMFPACK_PIVOT_TOLERANCE] times 00163 the largest absolute value in the column. A value of 1.0 gives true 00164 partial pivoting. If less than or equal to zero, then any nonzero 00165 entry is numerically acceptable as a pivot (this is changed from 00166 Version 4.0). Default: 0.1. 00167 00168 Smaller values tend to lead to sparser LU factors, but the solution 00169 to the linear system can become inaccurate. Larger values can lead 00170 to a more accurate solution (but not always), and usually an 00171 increase in the total work. 00172 00173 For complex matrices, a cheap approximate of the absolute value 00174 is used for the threshold partial pivoting test (|a_real| + |a_imag| 00175 instead of the more expensive-to-compute exact absolute value 00176 sqrt (a_real^2 + a_imag^2)). 00177 00178 Control [UMFPACK_SYM_PIVOT_TOLERANCE]: This parameter is new to V4.1. 00179 If diagonal pivoting is attempted (the symmetric or symmetric-2by2 00180 strategies are used) then this parameter is used to control when the 00181 diagonal entry is selected in a given pivot column. The absolute 00182 value of the entry must be >= Control [UMFPACK_SYM_PIVOT_TOLERANCE] 00183 times the largest absolute value in the column. A value of zero 00184 will ensure that no off-diagonal pivoting is performed, except that 00185 zero diagonal entries are not selected if there are any off-diagonal 00186 nonzero entries. 00187 00188 If an off-diagonal pivot is selected, an attempt is made to restore 00189 symmetry later on. Suppose A (i,j) is selected, where i != j. 00190 If column i has not yet been selected as a pivot column, then 00191 the entry A (j,i) is redefined as a "diagonal" entry, except that 00192 the tighter tolerance (Control [UMFPACK_PIVOT_TOLERANCE]) is 00193 applied. This strategy has an effect similar to 2-by-2 pivoting 00194 for symmetric indefinite matrices. If a 2-by-2 block pivot with 00195 nonzero structure 00196 00197 i j 00198 i: 0 x 00199 j: x 0 00200 00201 is selected in a symmetric indefinite factorization method, the 00202 2-by-2 block is inverted and a rank-2 update is applied. In 00203 UMFPACK, this 2-by-2 block would be reordered as 00204 00205 j i 00206 i: x 0 00207 j: 0 x 00208 00209 In both cases, the symmetry of the Schur complement is preserved. 00210 00211 Control [UMFPACK_SCALE]: This parameter is new to V4.1. Version 4.0 00212 did not scale the matrix. Note that the user's input matrix is 00213 never modified, only an internal copy is scaled. 00214 00215 There are three valid settings for this parameter. If any other 00216 value is provided, the default is used. 00217 00218 UMFPACK_SCALE_NONE: no scaling is performed. 00219 00220 UMFPACK_SCALE_SUM: each row of the input matrix A is divided by 00221 the sum of the absolute values of the entries in that row. 00222 The scaled matrix has an infinity norm of 1. 00223 00224 UMFPACK_SCALE_MAX: each row of the input matrix A is divided by 00225 the maximum the absolute values of the entries in that row. 00226 In the scaled matrix the largest entry in each row has 00227 a magnitude exactly equal to 1. 00228 00229 Note that for complex matrices, a cheap approximate absolute value 00230 is used, |a_real| + |a_imag|, instead of the exact absolute value 00231 sqrt ((a_real)^2 + (a_imag)^2). 00232 00233 Scaling is very important for the "symmetric" strategy when 00234 diagonal pivoting is attempted. It also improves the performance 00235 of the "unsymmetric" strategy. 00236 00237 Default: UMFPACK_SCALE_SUM. 00238 00239 Control [UMFPACK_ALLOC_INIT]: This parameter has changed in V4.1. 00240 00241 When umfpack_*_numeric starts, it allocates memory for the Numeric 00242 object. Part of this is of fixed size (approximately n double's + 00243 12*n integers). The remainder is of variable size, which grows to 00244 hold the LU factors and the frontal matrices created during 00245 factorization. A estimate of the upper bound is computed by 00246 umfpack_*_*symbolic, and returned by umfpack_*_*symbolic in 00247 Info [UMFPACK_VARIABLE_PEAK_ESTIMATE] (in Units). 00248 00249 If Control [UMFPACK_ALLOC_INIT] is >= 0, umfpack_*_numeric initially 00250 allocates space for the variable-sized part equal to this estimate 00251 times Control [UMFPACK_ALLOC_INIT]. Typically, for matrices for 00252 which the "unsymmetric" strategy applies, umfpack_*_numeric needs 00253 only about half the estimated memory space, so a setting of 0.5 or 00254 0.6 often provides enough memory for umfpack_*_numeric to factorize 00255 the matrix with no subsequent increases in the size of this block. 00256 00257 If the matrix is ordered via AMD, then this non-negative parameter 00258 is ignored. The initial allocation ratio computed automatically, 00259 as 1.2 * (nz + Info [UMFPACK_SYMMETRIC_LUNZ]) / 00260 (Info [UMFPACK_LNZ_ESTIMATE] + Info [UMFPACK_UNZ_ESTIMATE] - 00261 min (n_row, n_col)). 00262 00263 If Control [UMFPACK_ALLOC_INIT] is negative, then umfpack_*_numeric 00264 allocates a space with initial size (in Units) equal to 00265 (-Control [UMFPACK_ALLOC_INIT]). 00266 00267 Regardless of the value of this parameter, a space equal to or 00268 greater than the the bare minimum amount of memory needed to start 00269 the factorization is always initially allocated. The bare initial 00270 memory required is returned by umfpack_*_*symbolic in 00271 Info [UMFPACK_VARIABLE_INIT_ESTIMATE] (an exact value, not an 00272 estimate). 00273 00274 If the variable-size part of the Numeric object is found to be too 00275 small sometime after numerical factorization has started, the memory 00276 is increased in size by a factor of 1.2. If this fails, the 00277 request is reduced by a factor of 0.95 until it succeeds, or until 00278 it determines that no increase in size is possible. Garbage 00279 collection then occurs. 00280 00281 The strategy of attempting to "malloc" a working space, and 00282 re-trying with a smaller space, may not work under MATLAB, since 00283 mxMalloc aborts the mexFunction if it fails. The built-in umfpack 00284 routine (version 4.0) in MATLAB 6.5 uses utMalloc instead, which 00285 avoids this problem. As a mexFunction, utMalloc is used unless 00286 -DNUTIL is defined at compile time. The utMalloc routine, and 00287 utFree and utRealloc, are not documented. If the mexFunction 00288 doesn't work, then compile it with -DNUTIL instead. 00289 00290 If you are using the umfpack mexFunction, decrease the magnitude of 00291 Control [UMFPACK_ALLOC_INIT] if you run out of memory in MATLAB. 00292 00293 Default initial allocation size: 0.7. Thus, with the default 00294 control settings and the "unsymmetric" strategy, the upper-bound is 00295 reached after two reallocations (0.7 * 1.2 * 1.2 = 1.008). 00296 00297 Changing this parameter has little effect on fill-in or operation 00298 count. It has a small impact on run-time (the extra time required 00299 to do the garbage collection and memory reallocation). 00300 00301 Control [UMFPACK_FRONT_ALLOC_INIT]: This parameter is new to V4.1. 00302 00303 When UMFPACK starts the factorization of each "chain" of frontal 00304 matrices, it allocates a working array to hold the frontal matrices 00305 as they are factorized. The symbolic factorization computes the 00306 size of the largest possible frontal matrix that could occur during 00307 the factorization of each chain. 00308 00309 If Control [UMFPACK_FRONT_ALLOC_INIT] is >= 0, the following 00310 strategy is used. If the AMD ordering was used, this non-negative 00311 parameter is ignored. A front of size (d+2)*(d+2) is allocated, 00312 where d = Info [UMFPACK_SYMMETRIC_DMAX]. Otherwise, a front of 00313 size Control [UMFPACK_FRONT_ALLOC_INIT] times the largest front 00314 possible for this chain is allocated. 00315 00316 If Control [UMFPACK_FRONT_ALLOC_INIT] is negative, then a front of 00317 size (-Control [UMFPACK_FRONT_ALLOC_INIT]) is allocated (where the 00318 size is in terms of the number of numerical entries). This is done 00319 regardless of the ordering method or ordering strategy used. 00320 00321 Default: 0.5. 00322 00323 Control [UMFPACK_DROPTOL]: This parameter is new to V4.2. 00324 00325 Entries in L and U with absolute value less than or equal to the 00326 drop tolerance are removed from the data structures (unless leaving 00327 them there reduces memory usage by reducing the space required 00328 for the nonzero pattern of L and U). 00329 00330 Default: 0.0. 00331 00332 double Info [UMFPACK_INFO] ; Output argument. 00333 00334 Contains statistics about the numeric factorization. If a 00335 (double *) NULL pointer is passed, then no statistics are returned in 00336 Info (this is not an error condition). The following statistics are 00337 computed in umfpack_*_numeric: 00338 00339 Info [UMFPACK_STATUS]: status code. This is also the return value, 00340 whether or not Info is present. 00341 00342 UMFPACK_OK 00343 00344 Numeric factorization was successful. umfpack_*_numeric 00345 computed a valid numeric factorization. 00346 00347 UMFPACK_WARNING_singular_matrix 00348 00349 Numeric factorization was successful, but the matrix is 00350 singular. umfpack_*_numeric computed a valid numeric 00351 factorization, but you will get a divide by zero in 00352 umfpack_*_*solve. For the other cases below, no Numeric object 00353 is created (*Numeric is (void *) NULL). 00354 00355 UMFPACK_ERROR_out_of_memory 00356 00357 Insufficient memory to complete the numeric factorization. 00358 00359 UMFPACK_ERROR_argument_missing 00360 00361 One or more required arguments are missing. 00362 00363 UMFPACK_ERROR_invalid_Symbolic_object 00364 00365 Symbolic object provided as input is invalid. 00366 00367 UMFPACK_ERROR_different_pattern 00368 00369 The pattern (Ap and/or Ai) has changed since the call to 00370 umfpack_*_*symbolic which produced the Symbolic object. 00371 00372 Info [UMFPACK_NROW]: the value of n_row stored in the Symbolic object. 00373 00374 Info [UMFPACK_NCOL]: the value of n_col stored in the Symbolic object. 00375 00376 Info [UMFPACK_NZ]: the number of entries in the input matrix. 00377 This value is obtained from the Symbolic object. 00378 00379 Info [UMFPACK_SIZE_OF_UNIT]: the number of bytes in a Unit, for memory 00380 usage statistics below. 00381 00382 Info [UMFPACK_VARIABLE_INIT]: the initial size (in Units) of the 00383 variable-sized part of the Numeric object. If this differs from 00384 Info [UMFPACK_VARIABLE_INIT_ESTIMATE], then the pattern (Ap and/or 00385 Ai) has changed since the last call to umfpack_*_*symbolic, which is 00386 an error condition. 00387 00388 Info [UMFPACK_VARIABLE_PEAK]: the peak size (in Units) of the 00389 variable-sized part of the Numeric object. This size is the amount 00390 of space actually used inside the block of memory, not the space 00391 allocated via UMF_malloc. You can reduce UMFPACK's memory 00392 requirements by setting Control [UMFPACK_ALLOC_INIT] to the ratio 00393 Info [UMFPACK_VARIABLE_PEAK] / Info[UMFPACK_VARIABLE_PEAK_ESTIMATE]. 00394 This will ensure that no memory reallocations occur (you may want to 00395 add 0.001 to make sure that integer roundoff does not lead to a 00396 memory size that is 1 Unit too small; otherwise, garbage collection 00397 and reallocation will occur). 00398 00399 Info [UMFPACK_VARIABLE_FINAL]: the final size (in Units) of the 00400 variable-sized part of the Numeric object. It holds just the 00401 sparse LU factors. 00402 00403 Info [UMFPACK_NUMERIC_SIZE]: the actual final size (in Units) of the 00404 entire Numeric object, including the final size of the variable 00405 part of the object. Info [UMFPACK_NUMERIC_SIZE_ESTIMATE], 00406 an estimate, was computed by umfpack_*_*symbolic. The estimate is 00407 normally an upper bound on the actual final size, but this is not 00408 guaranteed. 00409 00410 Info [UMFPACK_PEAK_MEMORY]: the actual peak memory usage (in Units) of 00411 both umfpack_*_*symbolic and umfpack_*_numeric. An estimate, 00412 Info [UMFPACK_PEAK_MEMORY_ESTIMATE], was computed by 00413 umfpack_*_*symbolic. The estimate is normally an upper bound on the 00414 actual peak usage, but this is not guaranteed. With testing on 00415 hundreds of matrix arising in real applications, I have never 00416 observed a matrix where this estimate or the Numeric size estimate 00417 was less than the actual result, but this is theoretically possible. 00418 Please send me one if you find such a matrix. 00419 00420 Info [UMFPACK_FLOPS]: the actual count of the (useful) floating-point 00421 operations performed. An estimate, Info [UMFPACK_FLOPS_ESTIMATE], 00422 was computed by umfpack_*_*symbolic. The estimate is guaranteed to 00423 be an upper bound on this flop count. The flop count excludes 00424 "useless" flops on zero values, flops performed during the pivot 00425 search (for tentative updates and assembly of candidate columns), 00426 and flops performed to add frontal matrices together. 00427 00428 For the real version, only (+ - * /) are counted. For the complex 00429 version, the following counts are used: 00430 00431 operation flops 00432 c = 1/b 6 00433 c = a*b 6 00434 c -= a*b 8 00435 00436 Info [UMFPACK_LNZ]: the actual nonzero entries in final factor L, 00437 including the diagonal. This excludes any zero entries in L, 00438 although some of these are stored in the Numeric object. The 00439 Info [UMFPACK_LU_ENTRIES] statistic does account for all 00440 explicitly stored zeros, however. Info [UMFPACK_LNZ_ESTIMATE], 00441 an estimate, was computed by umfpack_*_*symbolic. The estimate is 00442 guaranteed to be an upper bound on Info [UMFPACK_LNZ]. 00443 00444 Info [UMFPACK_UNZ]: the actual nonzero entries in final factor U, 00445 including the diagonal. This excludes any zero entries in U, 00446 although some of these are stored in the Numeric object. The 00447 Info [UMFPACK_LU_ENTRIES] statistic does account for all 00448 explicitly stored zeros, however. Info [UMFPACK_UNZ_ESTIMATE], 00449 an estimate, was computed by umfpack_*_*symbolic. The estimate is 00450 guaranteed to be an upper bound on Info [UMFPACK_UNZ]. 00451 00452 Info [UMFPACK_NUMERIC_DEFRAG]: The number of garbage collections 00453 performed during umfpack_*_numeric, to compact the contents of the 00454 variable-sized workspace used by umfpack_*_numeric. No estimate was 00455 computed by umfpack_*_*symbolic. In the current version of UMFPACK, 00456 garbage collection is performed and then the memory is reallocated, 00457 so this statistic is the same as Info [UMFPACK_NUMERIC_REALLOC], 00458 below. It may differ in future releases. 00459 00460 Info [UMFPACK_NUMERIC_REALLOC]: The number of times that the Numeric 00461 object was increased in size from its initial size. A rough upper 00462 bound on the peak size of the Numeric object was computed by 00463 umfpack_*_*symbolic, so reallocations should be rare. However, if 00464 umfpack_*_numeric is unable to allocate that much storage, it 00465 reduces its request until either the allocation succeeds, or until 00466 it gets too small to do anything with. If the memory that it 00467 finally got was small, but usable, then the reallocation count 00468 could be high. No estimate of this count was computed by 00469 umfpack_*_*symbolic. 00470 00471 Info [UMFPACK_NUMERIC_COSTLY_REALLOC]: The number of times that the 00472 system realloc library routine (or mxRealloc for the mexFunction) 00473 had to move the workspace. Realloc can sometimes increase the size 00474 of a block of memory without moving it, which is much faster. This 00475 statistic will always be <= Info [UMFPACK_NUMERIC_REALLOC]. If your 00476 memory space is fragmented, then the number of "costly" realloc's 00477 will be equal to Info [UMFPACK_NUMERIC_REALLOC]. 00478 00479 Info [UMFPACK_COMPRESSED_PATTERN]: The number of integers used to 00480 represent the pattern of L and U. 00481 00482 Info [UMFPACK_LU_ENTRIES]: The total number of numerical values that 00483 are stored for the LU factors. Some of the values may be explicitly 00484 zero in order to save space (allowing for a smaller compressed 00485 pattern). 00486 00487 Info [UMFPACK_NUMERIC_TIME]: The CPU time taken, in seconds. 00488 00489 Info [UMFPACK_RCOND]: A rough estimate of the condition number, equal 00490 to min (abs (diag (U))) / max (abs (diag (U))), or zero if the 00491 diagonal of U is all zero. 00492 00493 Info [UMFPACK_UDIAG_NZ]: The number of numerically nonzero values on 00494 the diagonal of U. 00495 00496 Info [UMFPACK_UMIN]: the smallest absolute value on the diagonal of U. 00497 00498 Info [UMFPACK_UMAX]: the smallest absolute value on the diagonal of U. 00499 00500 Info [UMFPACK_MAX_FRONT_SIZE]: the size of the 00501 largest frontal matrix (number of entries). 00502 00503 ------------------------------------------------------------------------ 00504 The following statistics were added to Version 4.1: 00505 ------------------------------------------------------------------------ 00506 00507 Info [UMFPACK_NUMERIC_WALLTIME]: The wallclock time taken, in seconds. 00508 00509 Info [UMFPACK_MAX_FRONT_NROWS]: the max number of 00510 rows in any frontal matrix. 00511 00512 Info [UMFPACK_MAX_FRONT_NCOLS]: the max number of 00513 columns in any frontal matrix. 00514 00515 Info [UMFPACK_WAS_SCALED]: the scaling used, either UMFPACK_SCALE_NONE, 00516 UMFPACK_SCALE_SUM, or UMFPACK_SCALE_MAX. 00517 00518 Info [UMFPACK_RSMIN]: if scaling is performed, the smallest scale factor 00519 for any row (either the smallest sum of absolute entries, or the 00520 smallest maximum of absolute entries). 00521 00522 Info [UMFPACK_RSMAX]: if scaling is performed, the largest scale factor 00523 for any row (either the largest sum of absolute entries, or the 00524 largest maximum of absolute entries). 00525 00526 Info [UMFPACK_ALLOC_INIT_USED]: the initial allocation parameter used. 00527 00528 Info [UMFPACK_FORCED_UPDATES]: the number of BLAS-3 updates to the 00529 frontal matrices that were required because the frontal matrix 00530 grew larger than its current working array. 00531 00532 Info [UMFPACK_NOFF_DIAG]: number of off-diagonal pivots selected, if the 00533 symmetric or 2-by-2 strategies are used. 00534 00535 ------------------------------------------------------------------------ 00536 The following statistics were added to Version 4.2: 00537 ------------------------------------------------------------------------ 00538 00539 Info [UMFPACK_NZDROPPED]: the number of entries smaller in absolute 00540 value than Control [UMFPACK_DROPTOL] that were dropped from L and U. 00541 Note that entries on the diagonal of U are never dropped. 00542 00543 Info [UMFPACK_ALL_LNZ]: the number of entries in L, including the 00544 diagonal, if no small entries are dropped. 00545 00546 Info [UMFPACK_ALL_UNZ]: the number of entries in U, including the 00547 diagonal, if no small entries are dropped. 00548 00549 Only the above listed Info [...] entries are accessed. The remaining 00550 entries of Info are not accessed or modified by umfpack_*_numeric. 00551 Future versions might modify different parts of Info. 00552 */