<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>SuperLU: SRC/slu_util.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.5 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>SRC/slu_util.h</h1><a href="slu__util_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
<a name="l00011"></a>00011 <span class="preprocessor">#ifndef __SUPERLU_UTIL </span><span class="comment">/* allow multiple inclusions */</span>
<a name="l00012"></a>00012 <span class="preprocessor">#define __SUPERLU_UTIL</span>
<a name="l00013"></a>00013 <span class="preprocessor"></span>
<a name="l00014"></a>00014 <span class="preprocessor">#include <stdio.h></span>
<a name="l00015"></a>00015 <span class="preprocessor">#include <stdlib.h></span>
<a name="l00016"></a>00016 <span class="preprocessor">#include <string.h></span>
<a name="l00017"></a>00017 <span class="comment">/*</span>
<a name="l00018"></a>00018 <span class="comment">#ifndef __STDC__</span>
<a name="l00019"></a>00019 <span class="comment">#include <malloc.h></span>
<a name="l00020"></a>00020 <span class="comment">#endif</span>
<a name="l00021"></a>00021 <span class="comment">*/</span>
<a name="l00022"></a>00022 <span class="preprocessor">#include <assert.h></span>
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="superlu__enum__consts_8h.html" title="enum constants header file">superlu_enum_consts.h</a>"</span>
<a name="l00024"></a>00024
<a name="l00025"></a>00025 <span class="comment">/***********************************************************************</span>
<a name="l00026"></a>00026 <span class="comment"> * Macros</span>
<a name="l00027"></a>00027 <span class="comment"> ***********************************************************************/</span>
<a name="l00028"></a><a class="code" href="slu__util_8h.html#745e85e3ef4b1267858c9df86608518c">00028</a> <span class="preprocessor">#define FIRSTCOL_OF_SNODE(i) (xsup[i])</span>
<a name="l00029"></a>00029 <span class="preprocessor"></span><span class="comment">/* No of marker arrays used in the symbolic factorization,</span>
<a name="l00030"></a>00030 <span class="comment"> each of size n */</span>
<a name="l00031"></a><a class="code" href="slu__util_8h.html#9b7b2a5116ee487722b0967317ab6360">00031</a> <span class="preprocessor">#define NO_MARKER 3</span>
<a name="l00032"></a><a class="code" href="slu__util_8h.html#06193b28f40a4779ae7737711642eb45">00032</a> <span class="preprocessor"></span><span class="preprocessor">#define NUM_TEMPV(m,w,t,b) ( SUPERLU_MAX(m, (t + b)*w) )</span>
<a name="l00033"></a>00033 <span class="preprocessor"></span>
<a name="l00034"></a>00034 <span class="preprocessor">#ifndef USER_ABORT</span>
<a name="l00035"></a><a class="code" href="slu__util_8h.html#aba7be0a786a716c200675ac43827e2a">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define USER_ABORT(msg) superlu_abort_and_exit(msg)</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00037"></a>00037 <span class="preprocessor"></span>
<a name="l00038"></a><a class="code" href="slu__util_8h.html#a4b133a54309e2c6e4ba69f3ff1141c2">00038</a> <span class="preprocessor">#define ABORT(err_msg) \</span>
<a name="l00039"></a>00039 <span class="preprocessor"> { char msg[256];\</span>
<a name="l00040"></a>00040 <span class="preprocessor"> sprintf(msg,"%s at line %d in file %s\n",err_msg,__LINE__, __FILE__);\</span>
<a name="l00041"></a>00041 <span class="preprocessor"> USER_ABORT(msg); }</span>
<a name="l00042"></a>00042 <span class="preprocessor"></span>
<a name="l00043"></a>00043
<a name="l00044"></a>00044 <span class="preprocessor">#ifndef USER_MALLOC</span>
<a name="l00045"></a>00045 <span class="preprocessor"></span><span class="preprocessor">#if 1</span>
<a name="l00046"></a><a class="code" href="slu__util_8h.html#232b101af98715228590ae6e089f4c65">00046</a> <span class="preprocessor"></span><span class="preprocessor">#define USER_MALLOC(size) superlu_malloc(size)</span>
<a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span><span class="comment">/* The following may check out some uninitialized data */</span>
<a name="l00049"></a>00049 <span class="preprocessor">#define USER_MALLOC(size) memset (superlu_malloc(size), '\x0F', size)</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>
<a name="l00053"></a><a class="code" href="slu__util_8h.html#55a5ed83733c30850c14cc7b3f922a54">00053</a> <span class="preprocessor">#define SUPERLU_MALLOC(size) USER_MALLOC(size)</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>
<a name="l00055"></a>00055 <span class="preprocessor">#ifndef USER_FREE</span>
<a name="l00056"></a><a class="code" href="slu__util_8h.html#d7924033040c27afdb4a51ac9f8295b1">00056</a> <span class="preprocessor"></span><span class="preprocessor">#define USER_FREE(addr) superlu_free(addr)</span>
<a name="l00057"></a>00057 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00058"></a>00058 <span class="preprocessor"></span>
<a name="l00059"></a><a class="code" href="slu__util_8h.html#9672c5511c3efd9467e4d375a347c192">00059</a> <span class="preprocessor">#define SUPERLU_FREE(addr) USER_FREE(addr)</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span>
<a name="l00061"></a><a class="code" href="slu__util_8h.html#35401f732a50d2a0af33db1ea224b1f6">00061</a> <span class="preprocessor">#define CHECK_MALLOC(where) { \</span>
<a name="l00062"></a>00062 <span class="preprocessor"> extern int superlu_malloc_total; \</span>
<a name="l00063"></a>00063 <span class="preprocessor"> printf("%s: malloc_total %d Bytes\n", \</span>
<a name="l00064"></a>00064 <span class="preprocessor"> where, superlu_malloc_total); \</span>
<a name="l00065"></a>00065 <span class="preprocessor">}</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span>
<a name="l00067"></a><a class="code" href="slu__util_8h.html#dca8259e9d345c7cbaaa0608a1acdfd4">00067</a> <span class="preprocessor">#define SUPERLU_MAX(x, y) ( (x) > (y) ? (x) : (y) )</span>
<a name="l00068"></a><a class="code" href="slu__util_8h.html#7147dd5df1048562cd4ab83e9fd808d9">00068</a> <span class="preprocessor"></span><span class="preprocessor">#define SUPERLU_MIN(x, y) ( (x) < (y) ? (x) : (y) )</span>
<a name="l00069"></a>00069 <span class="preprocessor"></span>
<a name="l00070"></a>00070 <span class="comment">/*********************************************************</span>
<a name="l00071"></a>00071 <span class="comment"> * Macros used for easy access of sparse matrix entries. *</span>
<a name="l00072"></a>00072 <span class="comment"> *********************************************************/</span>
<a name="l00073"></a><a class="code" href="slu__util_8h.html#445a44f88349753bc17f28fbac4df382">00073</a> <span class="preprocessor">#define L_SUB_START(col) ( Lstore->rowind_colptr[col] )</span>
<a name="l00074"></a><a class="code" href="slu__util_8h.html#8de2450f2d4cf12794954b63a319c423">00074</a> <span class="preprocessor"></span><span class="preprocessor">#define L_SUB(ptr) ( Lstore->rowind[ptr] )</span>
<a name="l00075"></a><a class="code" href="slu__util_8h.html#79b13489e4cd00b09633e0c5e0be1b7c">00075</a> <span class="preprocessor"></span><span class="preprocessor">#define L_NZ_START(col) ( Lstore->nzval_colptr[col] )</span>
<a name="l00076"></a><a class="code" href="slu__util_8h.html#0ea367a3afecd30b570d0a46cc819cdf">00076</a> <span class="preprocessor"></span><span class="preprocessor">#define L_FST_SUPC(superno) ( Lstore->sup_to_col[superno] )</span>
<a name="l00077"></a><a class="code" href="slu__util_8h.html#c641190b1a047ebcf224372cb3dfec68">00077</a> <span class="preprocessor"></span><span class="preprocessor">#define U_NZ_START(col) ( Ustore->colptr[col] )</span>
<a name="l00078"></a><a class="code" href="slu__util_8h.html#cbd74ce05240823854ebfcd301f200e8">00078</a> <span class="preprocessor"></span><span class="preprocessor">#define U_SUB(ptr) ( Ustore->rowind[ptr] )</span>
<a name="l00079"></a>00079 <span class="preprocessor"></span>
<a name="l00080"></a>00080
<a name="l00081"></a>00081 <span class="comment">/***********************************************************************</span>
<a name="l00082"></a>00082 <span class="comment"> * Constants </span>
<a name="l00083"></a>00083 <span class="comment"> ***********************************************************************/</span>
<a name="l00084"></a><a class="code" href="slu__util_8h.html#2b7cf2a3641be7b89138615764d60ba3">00084</a> <span class="preprocessor">#define EMPTY (-1)</span>
<a name="l00085"></a>00085 <span class="preprocessor"></span><span class="comment">/*#define NO (-1)*/</span>
<a name="l00086"></a><a class="code" href="slu__util_8h.html#a93f0eb578d23995850d61f7d61c55c1">00086</a> <span class="preprocessor">#define FALSE 0</span>
<a name="l00087"></a><a class="code" href="slu__util_8h.html#a8cecfc5c5c054d2875c03e77b7be15d">00087</a> <span class="preprocessor"></span><span class="preprocessor">#define TRUE 1</span>
<a name="l00088"></a>00088 <span class="preprocessor"></span>
<a name="l00089"></a><a class="code" href="slu__util_8h.html#b9ccb8b9963ca083d7f36f5d3acc5744">00089</a> <span class="preprocessor">#define NO_MEMTYPE 4 </span><span class="comment">/* 0: lusup;</span>
<a name="l00090"></a>00090 <span class="comment"> 1: ucol;</span>
<a name="l00091"></a>00091 <span class="comment"> 2: lsub;</span>
<a name="l00092"></a>00092 <span class="comment"> 3: usub */</span>
<a name="l00093"></a>00093
<a name="l00094"></a><a class="code" href="slu__util_8h.html#d3754689b2ab3abc8b3afe4facdd76f3">00094</a> <span class="preprocessor">#define GluIntArray(n) (5 * (n) + 5)</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span>
<a name="l00096"></a>00096 <span class="comment">/* Dropping rules */</span>
<a name="l00097"></a><a class="code" href="slu__util_8h.html#aa1b4d4ec24548decf1f389060a7d878">00097</a> <span class="preprocessor">#define NODROP ( 0x0000 )</span>
<a name="l00098"></a><a class="code" href="slu__util_8h.html#fb51a22d4d20fb9e39acd95129344997">00098</a> <span class="preprocessor"></span><span class="preprocessor">#define DROP_BASIC ( 0x0001 ) </span><span class="comment">/* ILU(tau) */</span>
<a name="l00099"></a><a class="code" href="slu__util_8h.html#34a649fce94fb9a61524f3b18161aef8">00099</a> <span class="preprocessor">#define DROP_PROWS ( 0x0002 ) </span><span class="comment">/* ILUTP: keep p maximum rows */</span>
<a name="l00100"></a><a class="code" href="slu__util_8h.html#741f1ee3e9529b1384492787d09a0c70">00100</a> <span class="preprocessor">#define DROP_COLUMN ( 0x0004 ) </span><span class="comment">/* ILUTP: for j-th column, </span>
<a name="l00101"></a>00101 <span class="comment"> p = gamma * nnz(A(:,j)) */</span>
<a name="l00102"></a><a class="code" href="slu__util_8h.html#e56780c0f0b5afa706231cbe2b1ee82f">00102</a> <span class="preprocessor">#define DROP_AREA ( 0x0008 ) </span><span class="comment">/* ILUTP: for j-th column, use</span>
<a name="l00103"></a>00103 <span class="comment"> nnz(F(:,1:j)) / nnz(A(:,1:j))</span>
<a name="l00104"></a>00104 <span class="comment"> to limit memory growth */</span>
<a name="l00105"></a><a class="code" href="slu__util_8h.html#72349305248ecb540ca43f404884bef5">00105</a> <span class="preprocessor">#define DROP_SECONDARY ( 0x000E ) </span><span class="comment">/* PROWS | COLUMN | AREA */</span>
<a name="l00106"></a><a class="code" href="slu__util_8h.html#c6089af2caea8fef6aa343cb16fd1646">00106</a> <span class="preprocessor">#define DROP_DYNAMIC ( 0x0010 ) </span><span class="comment">/* adaptive tau */</span>
<a name="l00107"></a><a class="code" href="slu__util_8h.html#ea78484190db0dd61d91743797bf6bfe">00107</a> <span class="preprocessor">#define DROP_INTERP ( 0x0100 ) </span><span class="comment">/* use interpolation */</span>
<a name="l00108"></a>00108
<a name="l00109"></a>00109
<a name="l00110"></a>00110 <span class="preprocessor">#if 1</span>
<a name="l00111"></a><a class="code" href="slu__util_8h.html#90dea7f830398b8c30be7488e24089bb">00111</a> <span class="preprocessor"></span><span class="preprocessor">#define MILU_ALPHA (1.0e-2) </span><span class="comment">/* multiple of drop_sum to be added to diagonal */</span>
<a name="l00112"></a>00112 <span class="preprocessor">#else</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span><span class="preprocessor">#define MILU_ALPHA 1.0 </span><span class="comment">/* multiple of drop_sum to be added to diagonal */</span>
<a name="l00114"></a>00114 <span class="preprocessor">#endif</span>
<a name="l00115"></a>00115 <span class="preprocessor"></span>
<a name="l00116"></a>00116
<a name="l00117"></a>00117 <span class="comment">/***********************************************************************</span>
<a name="l00118"></a>00118 <span class="comment"> * Type definitions</span>
<a name="l00119"></a>00119 <span class="comment"> ***********************************************************************/</span>
<a name="l00120"></a><a class="code" href="slu__util_8h.html#aae6020bb33e780ff6edbd4e45ce08ac">00120</a> <span class="keyword">typedef</span> <span class="keywordtype">float</span> <a class="code" href="slu__util_8h.html#aae6020bb33e780ff6edbd4e45ce08ac">flops_t</a>;
<a name="l00121"></a><a class="code" href="slu__util_8h.html#30f473cd214dc43270f7a4d54b2887d2">00121</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="slu__util_8h.html#30f473cd214dc43270f7a4d54b2887d2">Logical</a>;
<a name="l00122"></a>00122
<a name="l00123"></a>00123 <span class="comment">/* </span>
<a name="l00124"></a>00124 <span class="comment"> *-- This contains the options used to control the solution process.</span>
<a name="l00125"></a>00125 <span class="comment"> *</span>
<a name="l00126"></a>00126 <span class="comment"> * Fact (fact_t)</span>
<a name="l00127"></a>00127 <span class="comment"> * Specifies whether or not the factored form of the matrix</span>
<a name="l00128"></a>00128 <span class="comment"> * A is supplied on entry, and if not, how the matrix A should</span>
<a name="l00129"></a>00129 <span class="comment"> * be factorizaed.</span>
<a name="l00130"></a>00130 <span class="comment"> * = DOFACT: The matrix A will be factorized from scratch, and the</span>
<a name="l00131"></a>00131 <span class="comment"> * factors will be stored in L and U.</span>
<a name="l00132"></a>00132 <span class="comment"> * = SamePattern: The matrix A will be factorized assuming</span>
<a name="l00133"></a>00133 <span class="comment"> * that a factorization of a matrix with the same sparsity</span>
<a name="l00134"></a>00134 <span class="comment"> * pattern was performed prior to this one. Therefore, this</span>
<a name="l00135"></a>00135 <span class="comment"> * factorization will reuse column permutation vector </span>
<a name="l00136"></a>00136 <span class="comment"> * ScalePermstruct->perm_c and the column elimination tree</span>
<a name="l00137"></a>00137 <span class="comment"> * LUstruct->etree.</span>
<a name="l00138"></a>00138 <span class="comment"> * = SamePattern_SameRowPerm: The matrix A will be factorized</span>
<a name="l00139"></a>00139 <span class="comment"> * assuming that a factorization of a matrix with the same</span>
<a name="l00140"></a>00140 <span class="comment"> * sparsity pattern and similar numerical values was performed</span>
<a name="l00141"></a>00141 <span class="comment"> * prior to this one. Therefore, this factorization will reuse</span>
<a name="l00142"></a>00142 <span class="comment"> * both row and column scaling factors R and C, both row and</span>
<a name="l00143"></a>00143 <span class="comment"> * column permutation vectors perm_r and perm_c, and the</span>
<a name="l00144"></a>00144 <span class="comment"> * data structure set up from the previous symbolic factorization.</span>
<a name="l00145"></a>00145 <span class="comment"> * = FACTORED: On entry, L, U, perm_r and perm_c contain the </span>
<a name="l00146"></a>00146 <span class="comment"> * factored form of A. If DiagScale is not NOEQUIL, the matrix</span>
<a name="l00147"></a>00147 <span class="comment"> * A has been equilibrated with scaling factors R and C.</span>
<a name="l00148"></a>00148 <span class="comment"> *</span>
<a name="l00149"></a>00149 <span class="comment"> * Equil (yes_no_t)</span>
<a name="l00150"></a>00150 <span class="comment"> * Specifies whether to equilibrate the system (scale A's row and</span>
<a name="l00151"></a>00151 <span class="comment"> * columns to have unit norm).</span>
<a name="l00152"></a>00152 <span class="comment"> *</span>
<a name="l00153"></a>00153 <span class="comment"> * ColPerm (colperm_t)</span>
<a name="l00154"></a>00154 <span class="comment"> * Specifies what type of column permutation to use to reduce fill.</span>
<a name="l00155"></a>00155 <span class="comment"> * = NATURAL: use the natural ordering </span>
<a name="l00156"></a>00156 <span class="comment"> * = MMD_ATA: use minimum degree ordering on structure of A'*A</span>
<a name="l00157"></a>00157 <span class="comment"> * = MMD_AT_PLUS_A: use minimum degree ordering on structure of A'+A</span>
<a name="l00158"></a>00158 <span class="comment"> * = COLAMD: use approximate minimum degree column ordering</span>
<a name="l00159"></a>00159 <span class="comment"> * = MY_PERMC: use the ordering specified by the user</span>
<a name="l00160"></a>00160 <span class="comment"> * </span>
<a name="l00161"></a>00161 <span class="comment"> * Trans (trans_t)</span>
<a name="l00162"></a>00162 <span class="comment"> * Specifies the form of the system of equations:</span>
<a name="l00163"></a>00163 <span class="comment"> * = NOTRANS: A * X = B (No transpose)</span>
<a name="l00164"></a>00164 <span class="comment"> * = TRANS: A**T * X = B (Transpose)</span>
<a name="l00165"></a>00165 <span class="comment"> * = CONJ: A**H * X = B (Transpose)</span>
<a name="l00166"></a>00166 <span class="comment"> *</span>
<a name="l00167"></a>00167 <span class="comment"> * IterRefine (IterRefine_t)</span>
<a name="l00168"></a>00168 <span class="comment"> * Specifies whether to perform iterative refinement.</span>
<a name="l00169"></a>00169 <span class="comment"> * = NO: no iterative refinement</span>
<a name="l00170"></a>00170 <span class="comment"> * = SINGLE: perform iterative refinement in single precision</span>
<a name="l00171"></a>00171 <span class="comment"> * = DOUBLE: perform iterative refinement in double precision</span>
<a name="l00172"></a>00172 <span class="comment"> * = EXTRA: perform iterative refinement in extra precision</span>
<a name="l00173"></a>00173 <span class="comment"> *</span>
<a name="l00174"></a>00174 <span class="comment"> * DiagPivotThresh (double, in [0.0, 1.0]) (only for sequential SuperLU)</span>
<a name="l00175"></a>00175 <span class="comment"> * Specifies the threshold used for a diagonal entry to be an</span>
<a name="l00176"></a>00176 <span class="comment"> * acceptable pivot.</span>
<a name="l00177"></a>00177 <span class="comment"> *</span>
<a name="l00178"></a>00178 <span class="comment"> * SymmetricMode (yest_no_t)</span>
<a name="l00179"></a>00179 <span class="comment"> * Specifies whether to use symmetric mode. Symmetric mode gives </span>
<a name="l00180"></a>00180 <span class="comment"> * preference to diagonal pivots, and uses an (A'+A)-based column</span>
<a name="l00181"></a>00181 <span class="comment"> * permutation algorithm.</span>
<a name="l00182"></a>00182 <span class="comment"> *</span>
<a name="l00183"></a>00183 <span class="comment"> * PivotGrowth (yes_no_t)</span>
<a name="l00184"></a>00184 <span class="comment"> * Specifies whether to compute the reciprocal pivot growth.</span>
<a name="l00185"></a>00185 <span class="comment"> *</span>
<a name="l00186"></a>00186 <span class="comment"> * ConditionNumber (ues_no_t)</span>
<a name="l00187"></a>00187 <span class="comment"> * Specifies whether to compute the reciprocal condition number.</span>
<a name="l00188"></a>00188 <span class="comment"> *</span>
<a name="l00189"></a>00189 <span class="comment"> * RowPerm (rowperm_t) (only for SuperLU_DIST or ILU)</span>
<a name="l00190"></a>00190 <span class="comment"> * Specifies whether to permute rows of the original matrix.</span>
<a name="l00191"></a>00191 <span class="comment"> * = NO: not to permute the rows</span>
<a name="l00192"></a>00192 <span class="comment"> * = LargeDiag: make the diagonal large relative to the off-diagonal</span>
<a name="l00193"></a>00193 <span class="comment"> * = MY_PERMR: use the permutation given by the user</span>
<a name="l00194"></a>00194 <span class="comment"> *</span>
<a name="l00195"></a>00195 <span class="comment"> * ILU_DropRule (int)</span>
<a name="l00196"></a>00196 <span class="comment"> * Specifies the dropping rule:</span>
<a name="l00197"></a>00197 <span class="comment"> * = DROP_BASIC: Basic dropping rule, supernodal based ILUTP(tau).</span>
<a name="l00198"></a>00198 <span class="comment"> * = DROP_PROWS: Supernodal based ILUTP(p,tau), p = gamma * nnz(A)/n.</span>
<a name="l00199"></a>00199 <span class="comment"> * = DROP_COLUMN: Variant of ILUTP(p,tau), for j-th column,</span>
<a name="l00200"></a>00200 <span class="comment"> * p = gamma * nnz(A(:,j)).</span>
<a name="l00201"></a>00201 <span class="comment"> * = DROP_AREA: Variation of ILUTP, for j-th column, use</span>
<a name="l00202"></a>00202 <span class="comment"> * nnz(F(:,1:j)) / nnz(A(:,1:j)) to control memory.</span>
<a name="l00203"></a>00203 <span class="comment"> * = DROP_DYNAMIC: Modify the threshold tau during factorizaion:</span>
<a name="l00204"></a>00204 <span class="comment"> * If nnz(L(:,1:j)) / nnz(A(:,1:j)) > gamma</span>
<a name="l00205"></a>00205 <span class="comment"> * tau_L(j) := MIN(tau_0, tau_L(j-1) * 2);</span>
<a name="l00206"></a>00206 <span class="comment"> * Otherwise</span>
<a name="l00207"></a>00207 <span class="comment"> * tau_L(j) := MAX(tau_0, tau_L(j-1) / 2);</span>
<a name="l00208"></a>00208 <span class="comment"> * tau_U(j) uses the similar rule.</span>
<a name="l00209"></a>00209 <span class="comment"> * NOTE: the thresholds used by L and U are separate.</span>
<a name="l00210"></a>00210 <span class="comment"> * = DROP_INTERP: Compute the second dropping threshold by</span>
<a name="l00211"></a>00211 <span class="comment"> * interpolation instead of sorting (default).</span>
<a name="l00212"></a>00212 <span class="comment"> * In this case, the actual fill ratio is not</span>
<a name="l00213"></a>00213 <span class="comment"> * guaranteed to be smaller than gamma.</span>
<a name="l00214"></a>00214 <span class="comment"> * Note: DROP_PROWS, DROP_COLUMN and DROP_AREA are mutually exclusive.</span>
<a name="l00215"></a>00215 <span class="comment"> * ( Default: DROP_BASIC | DROP_AREA )</span>
<a name="l00216"></a>00216 <span class="comment"> *</span>
<a name="l00217"></a>00217 <span class="comment"> * ILU_DropTol (double)</span>
<a name="l00218"></a>00218 <span class="comment"> * numerical threshold for dropping.</span>
<a name="l00219"></a>00219 <span class="comment"> *</span>
<a name="l00220"></a>00220 <span class="comment"> * ILU_FillFactor (double) </span>
<a name="l00221"></a>00221 <span class="comment"> * Gamma in the secondary dropping.</span>
<a name="l00222"></a>00222 <span class="comment"> *</span>
<a name="l00223"></a>00223 <span class="comment"> * ILU_Norm (norm_t)</span>
<a name="l00224"></a>00224 <span class="comment"> * Specify which norm to use to measure the row size in a</span>
<a name="l00225"></a>00225 <span class="comment"> * supernode: infinity-norm, 1-norm, or 2-norm.</span>
<a name="l00226"></a>00226 <span class="comment"> *</span>
<a name="l00227"></a>00227 <span class="comment"> * ILU_FillTol (double)</span>
<a name="l00228"></a>00228 <span class="comment"> * numerical threshold for zero pivot perturbation.</span>
<a name="l00229"></a>00229 <span class="comment"> *</span>
<a name="l00230"></a>00230 <span class="comment"> * ILU_MILU (milu_t)</span>
<a name="l00231"></a>00231 <span class="comment"> * Specifies which version of MILU to use.</span>
<a name="l00232"></a>00232 <span class="comment"> *</span>
<a name="l00233"></a>00233 <span class="comment"> * ILU_MILU_Dim (double) </span>
<a name="l00234"></a>00234 <span class="comment"> * Dimension of the PDE if available.</span>
<a name="l00235"></a>00235 <span class="comment"> *</span>
<a name="l00236"></a>00236 <span class="comment"> * ReplaceTinyPivot (yes_no_t) (only for SuperLU_DIST)</span>
<a name="l00237"></a>00237 <span class="comment"> * Specifies whether to replace the tiny diagonals by</span>
<a name="l00238"></a>00238 <span class="comment"> * sqrt(epsilon)*||A|| during LU factorization.</span>
<a name="l00239"></a>00239 <span class="comment"> *</span>
<a name="l00240"></a>00240 <span class="comment"> * SolveInitialized (yes_no_t) (only for SuperLU_DIST)</span>
<a name="l00241"></a>00241 <span class="comment"> * Specifies whether the initialization has been performed to the</span>
<a name="l00242"></a>00242 <span class="comment"> * triangular solve.</span>
<a name="l00243"></a>00243 <span class="comment"> *</span>
<a name="l00244"></a>00244 <span class="comment"> * RefineInitialized (yes_no_t) (only for SuperLU_DIST)</span>
<a name="l00245"></a>00245 <span class="comment"> * Specifies whether the initialization has been performed to the</span>
<a name="l00246"></a>00246 <span class="comment"> * sparse matrix-vector multiplication routine needed in iterative</span>
<a name="l00247"></a>00247 <span class="comment"> * refinement.</span>
<a name="l00248"></a>00248 <span class="comment"> *</span>
<a name="l00249"></a>00249 <span class="comment"> * PrintStat (yes_no_t)</span>
<a name="l00250"></a>00250 <span class="comment"> * Specifies whether to print the solver's statistics.</span>
<a name="l00251"></a>00251 <span class="comment"> */</span>
<a name="l00252"></a><a class="code" href="structsuperlu__options__t.html">00252</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00253"></a><a class="code" href="structsuperlu__options__t.html#cbd3cc1d27bbaf5bc168ebbbd6bf60fe">00253</a> <a class="code" href="superlu__enum__consts_8h.html#c785c8235480e5cfef9848d89c047c0a">fact_t</a> Fact;
<a name="l00254"></a><a class="code" href="structsuperlu__options__t.html#3fe998e3518ad90532072fa8929a1e2f">00254</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> Equil;
<a name="l00255"></a><a class="code" href="structsuperlu__options__t.html#f6e41a7d8ca989c5396f6edc67be0409">00255</a> <a class="code" href="superlu__enum__consts_8h.html#bd17bbb14f57694750d96639e738e89c">colperm_t</a> ColPerm;
<a name="l00256"></a><a class="code" href="structsuperlu__options__t.html#23fa8259c7091d82f10f0dfc7718dc36">00256</a> <a class="code" href="superlu__enum__consts_8h.html#0c4e17b2d5cea33f9991ccc6a6678d62">trans_t</a> Trans;
<a name="l00257"></a><a class="code" href="structsuperlu__options__t.html#3e40fb39641e0caf27feb6998d21d98a">00257</a> <a class="code" href="superlu__enum__consts_8h.html#7e73e9d3a9caeec3586c03e01c494e37">IterRefine_t</a> IterRefine;
<a name="l00258"></a><a class="code" href="structsuperlu__options__t.html#e574f08a3f4094dae8f635690b71d944">00258</a> <span class="keywordtype">double</span> DiagPivotThresh;
<a name="l00259"></a><a class="code" href="structsuperlu__options__t.html#ad1b52d0366ae8601e97fab5c470c45d">00259</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> SymmetricMode;
<a name="l00260"></a><a class="code" href="structsuperlu__options__t.html#a75cfd534f156c78b7dc69e7e68596da">00260</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> PivotGrowth;
<a name="l00261"></a><a class="code" href="structsuperlu__options__t.html#3394d6658ec588071a9fee24a728eb07">00261</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> ConditionNumber;
<a name="l00262"></a><a class="code" href="structsuperlu__options__t.html#d38e45769deca7564ea75caec2ad58e6">00262</a> <a class="code" href="superlu__enum__consts_8h.html#a38fa2e7f17b86333ca49e4b8a151adf">rowperm_t</a> RowPerm;
<a name="l00263"></a><a class="code" href="structsuperlu__options__t.html#c0ca2f81f68ad7596f2ada5739acc4d5">00263</a> <span class="keywordtype">int</span> ILU_DropRule;
<a name="l00264"></a><a class="code" href="structsuperlu__options__t.html#4f629bb593cb42f213887d521c8f2288">00264</a> <span class="keywordtype">double</span> ILU_DropTol; <span class="comment">/* threshold for dropping */</span>
<a name="l00265"></a><a class="code" href="structsuperlu__options__t.html#cf43941c86c9f3d1b46a6655f97bac70">00265</a> <span class="keywordtype">double</span> ILU_FillFactor; <span class="comment">/* gamma in the secondary dropping */</span>
<a name="l00266"></a><a class="code" href="structsuperlu__options__t.html#d8ed1b7a0243a10193ff792053b281c9">00266</a> <a class="code" href="superlu__enum__consts_8h.html#e1770bc6f4ac445d81ad521683a57a2f">norm_t</a> ILU_Norm; <span class="comment">/* infinity-norm, 1-norm, or 2-norm */</span>
<a name="l00267"></a><a class="code" href="structsuperlu__options__t.html#8021fa436ad10dfdee734364bcd428c5">00267</a> <span class="keywordtype">double</span> ILU_FillTol; <span class="comment">/* threshold for zero pivot perturbation */</span>
<a name="l00268"></a><a class="code" href="structsuperlu__options__t.html#74708fd3231a761394bed90da1eba63b">00268</a> <a class="code" href="superlu__enum__consts_8h.html#0cb73c13a7c2390c3a9a0a8913477ff0">milu_t</a> ILU_MILU;
<a name="l00269"></a><a class="code" href="structsuperlu__options__t.html#ba6edb00ac03655feb075bf9d6904d18">00269</a> <span class="keywordtype">double</span> ILU_MILU_Dim; <span class="comment">/* Dimension of PDE (if available) */</span>
<a name="l00270"></a><a class="code" href="structsuperlu__options__t.html#e2f1847e26bce58631ca5d58ad3d46ed">00270</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> ParSymbFact;
<a name="l00271"></a><a class="code" href="structsuperlu__options__t.html#791051ffa3861ba7203b0a1da2e6bf4b">00271</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> ReplaceTinyPivot; <span class="comment">/* used in SuperLU_DIST */</span>
<a name="l00272"></a><a class="code" href="structsuperlu__options__t.html#246344bda7ff7d5547101c2f01737ee7">00272</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> SolveInitialized;
<a name="l00273"></a><a class="code" href="structsuperlu__options__t.html#6cfb6d3c0e8d5d2c8b4b813883e395b7">00273</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> RefineInitialized;
<a name="l00274"></a><a class="code" href="structsuperlu__options__t.html#afe514c5a01fe24b70cc636621a86576">00274</a> <a class="code" href="superlu__enum__consts_8h.html#e6553118ce91b9c08f9376941ae1536f">yes_no_t</a> PrintStat;
<a name="l00275"></a>00275 } <a class="code" href="structsuperlu__options__t.html">superlu_options_t</a>;
<a name="l00276"></a>00276
<a name="l00278"></a><a class="code" href="structe__node.html">00278</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structe__node.html" title="Headers for 4 types of dynamatically managed memory.">e_node</a> {
<a name="l00279"></a><a class="code" href="structe__node.html#2b5a49fe848fe66d1643a37ae2a842eb">00279</a> <span class="keywordtype">int</span> <a class="code" href="structe__node.html#2b5a49fe848fe66d1643a37ae2a842eb">size</a>; <span class="comment">/* length of the memory that has been used */</span>
<a name="l00280"></a><a class="code" href="structe__node.html#6a040bdcee064559b0b480a96ccfac65">00280</a> <span class="keywordtype">void</span> *<a class="code" href="structe__node.html#6a040bdcee064559b0b480a96ccfac65">mem</a>; <span class="comment">/* pointer to the new malloc'd store */</span>
<a name="l00281"></a>00281 } <a class="code" href="structe__node.html" title="Headers for 4 types of dynamatically managed memory.">ExpHeader</a>;
<a name="l00282"></a>00282
<a name="l00283"></a><a class="code" href="structLU__stack__t.html">00283</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00284"></a><a class="code" href="structLU__stack__t.html#f05e6775b79809e7bcc0c92da24c12f5">00284</a> <span class="keywordtype">int</span> size;
<a name="l00285"></a><a class="code" href="structLU__stack__t.html#78ad1773677b220bd843c9d84bbda869">00285</a> <span class="keywordtype">int</span> used;
<a name="l00286"></a><a class="code" href="structLU__stack__t.html#3ba965e6621326c518c95d791afe6fef">00286</a> <span class="keywordtype">int</span> top1; <span class="comment">/* grow upward, relative to &array[0] */</span>
<a name="l00287"></a><a class="code" href="structLU__stack__t.html#1ae2a485bc81409ceb05bce271363901">00287</a> <span class="keywordtype">int</span> top2; <span class="comment">/* grow downward */</span>
<a name="l00288"></a><a class="code" href="structLU__stack__t.html#c76a2713e4f4c516d7189303b6f82c8d">00288</a> <span class="keywordtype">void</span> *array;
<a name="l00289"></a>00289 } <a class="code" href="structLU__stack__t.html">LU_stack_t</a>;
<a name="l00290"></a>00290
<a name="l00291"></a><a class="code" href="structSuperLUStat__t.html">00291</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00292"></a><a class="code" href="structSuperLUStat__t.html#9a15399d38ecaf731ec300977f268b75">00292</a> <span class="keywordtype">int</span> *panel_histo; <span class="comment">/* histogram of panel size distribution */</span>
<a name="l00293"></a><a class="code" href="structSuperLUStat__t.html#5eccc9eba32b749c87f7a97991cfdc18">00293</a> <span class="keywordtype">double</span> *utime; <span class="comment">/* running time at various phases */</span>
<a name="l00294"></a><a class="code" href="structSuperLUStat__t.html#ec6afa389e49ac9d04dc44e24805c99d">00294</a> <a class="code" href="slu__util_8h.html#aae6020bb33e780ff6edbd4e45ce08ac">flops_t</a> *ops; <span class="comment">/* operation count at various phases */</span>
<a name="l00295"></a><a class="code" href="structSuperLUStat__t.html#d752e80fc9fa85195ec9c0e9a17b481c">00295</a> <span class="keywordtype">int</span> TinyPivots; <span class="comment">/* number of tiny pivots */</span>
<a name="l00296"></a><a class="code" href="structSuperLUStat__t.html#472eadaf612c983b8829ae40b09f411b">00296</a> <span class="keywordtype">int</span> RefineSteps; <span class="comment">/* number of iterative refinement steps */</span>
<a name="l00297"></a><a class="code" href="structSuperLUStat__t.html#b0281af9350a75b2d4a3108b8bc0bf23">00297</a> <span class="keywordtype">int</span> expansions; <span class="comment">/* number of memory expansions */</span>
<a name="l00298"></a>00298 } <a class="code" href="structSuperLUStat__t.html">SuperLUStat_t</a>;
<a name="l00299"></a>00299
<a name="l00300"></a><a class="code" href="structmem__usage__t.html">00300</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00301"></a><a class="code" href="structmem__usage__t.html#ea63300065ca81e5387c1706d7b3e705">00301</a> <span class="keywordtype">float</span> for_lu;
<a name="l00302"></a><a class="code" href="structmem__usage__t.html#7225324e3925e071e95a58d49367a88a">00302</a> <span class="keywordtype">float</span> total_needed;
<a name="l00303"></a>00303 } <a class="code" href="structmem__usage__t.html">mem_usage_t</a>;
<a name="l00304"></a>00304
<a name="l00305"></a>00305
<a name="l00306"></a>00306 <span class="comment">/***********************************************************************</span>
<a name="l00307"></a>00307 <span class="comment"> * Prototypes</span>
<a name="l00308"></a>00308 <span class="comment"> ***********************************************************************/</span>
<a name="l00309"></a>00309 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00311"></a>00311 <span class="preprocessor">#endif</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span>
<a name="l00313"></a>00313 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#2c43be55861c6e4ee5b806ac16cc382c" title="Deallocate the structure pointing to the actual storage of the matrix.">Destroy_SuperMatrix_Store</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00314"></a>00314 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#4257e4d9cca1db286b73154d81ec3880">Destroy_CompCol_Matrix</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00315"></a>00315 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#98cbb427c29a6be1760288b63857bc12">Destroy_CompRow_Matrix</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00316"></a>00316 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#de01201644d38ff78cd1824ff2e5022b">Destroy_SuperNode_Matrix</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00317"></a>00317 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#4de38e1c0ef18dd0791cb206c7f5348f" title="A is of type Stype==NCP.">Destroy_CompCol_Permuted</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00318"></a>00318 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#9f7e658f2e17e08b2d88fadc11f2b437" title="A is of type Stype==DN.">Destroy_Dense_Matrix</a>(<a class="code" href="structSuperMatrix.html">SuperMatrix</a> *);
<a name="l00319"></a>00319 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="get__perm__c_8c.html#aecb6e6e7a3e97356050bcfdf2573796">get_perm_c</a>(<span class="keywordtype">int</span>, <a class="code" href="structSuperMatrix.html">SuperMatrix</a> *, <span class="keywordtype">int</span> *);
<a name="l00320"></a>00320 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#4792687285a879f7955029421ba99795" title="Set the default values for the options argument.">set_default_options</a>(<a class="code" href="structsuperlu__options__t.html">superlu_options_t</a> *options);
<a name="l00321"></a>00321 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#fce6cba2b855a4b046f6521d5dd1beb4" title="Set the default values for the options argument for ILU.">ilu_set_default_options</a>(<a class="code" href="structsuperlu__options__t.html">superlu_options_t</a> *options);
<a name="l00322"></a>00322 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#df9c573cbfb4520a5ea820702d27cfa5">sp_preorder</a> (<a class="code" href="structsuperlu__options__t.html">superlu_options_t</a> *, <a class="code" href="structSuperMatrix.html">SuperMatrix</a>*, <span class="keywordtype">int</span>*, <span class="keywordtype">int</span>*,
<a name="l00323"></a>00323 <a class="code" href="structSuperMatrix.html">SuperMatrix</a>*);
<a name="l00324"></a>00324 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#bd38b081866ed2c3e4959c4c0560913c" title="Global statistics variale.">superlu_abort_and_exit</a>(<span class="keywordtype">char</span>*);
<a name="l00325"></a>00325 <span class="keyword">extern</span> <span class="keywordtype">void</span> *<a class="code" href="memory_8c.html#9ab2cc28807c3b5f5ca8eb9b85ea1f3f">superlu_malloc</a> (<span class="keywordtype">size_t</span>);
<a name="l00326"></a>00326 <span class="keyword">extern</span> <span class="keywordtype">int</span> *<a class="code" href="memory_8c.html#49bbe20102e5b541c8e8963afa2bd46a">intMalloc</a> (<span class="keywordtype">int</span>);
<a name="l00327"></a>00327 <span class="keyword">extern</span> <span class="keywordtype">int</span> *<a class="code" href="memory_8c.html#af51f82a79c361236a2d825a59a63403">intCalloc</a> (<span class="keywordtype">int</span>);
<a name="l00328"></a>00328 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="memory_8c.html#50cc6d9102542bf48b24f6d21cfa7deb">superlu_free</a> (<span class="keywordtype">void</span>*);
<a name="l00329"></a>00329 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="memory_8c.html#dbbe5a57b4ed64564c887fb52d798c54" title="Set up pointers for integer working arrays.">SetIWork</a> (<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> **, <span class="keywordtype">int</span> **, <span class="keywordtype">int</span> **,
<a name="l00330"></a>00330 <span class="keywordtype">int</span> **, <span class="keywordtype">int</span> **, <span class="keywordtype">int</span> **, <span class="keywordtype">int</span> **);
<a name="l00331"></a>00331 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#f8198f26bef3c82fbb8601fc5a8e0d9e">sp_coletree</a> (<span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00332"></a>00332 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="relax__snode_8c.html#d70bc12cb9031ab8aba4a37a18be46e3">relax_snode</a> (<span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00333"></a>00333 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="heap__relax__snode_8c.html#059d36bb76b7562c9bb2cbd7870e7ffe">heap_relax_snode</a> (<span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00334"></a>00334 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="mark__relax_8c.html#5e85b0273eec011f0027d8506a20350e">mark_relax</a>(<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00335"></a>00335 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="ilu__relax__snode_8c.html#e0e2bbb8507d800766030635a3bd5a7e">ilu_relax_snode</a> (<span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *,
<a name="l00336"></a>00336 <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00337"></a>00337 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="ilu__heap__relax__snode_8c.html#ac1a978dda622cdb58c3c2eaee4b4030">ilu_heap_relax_snode</a> (<span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *,
<a name="l00338"></a>00338 <span class="keywordtype">int</span> *, <span class="keywordtype">int</span>*);
<a name="l00339"></a>00339 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#b71db926d60d7b8fd739df197b766366" title="Reset repfnz[] for the current column.">resetrep_col</a> (<span class="keyword">const</span> <span class="keywordtype">int</span>, <span class="keyword">const</span> <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00340"></a>00340 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#0bccee6dda29384503240026c062bfc6">spcoletree</a> (<span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00341"></a>00341 <span class="keyword">extern</span> <span class="keywordtype">int</span> *<a class="code" href="slu__util_8h.html#44084fde835d2ccaa25e9fd942a72b7a">TreePostorder</a> (<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00342"></a>00342 <span class="keyword">extern</span> <span class="keywordtype">double</span> <a class="code" href="slu__util_8h.html#0c6777573bbfe81917cd381e0090d355" title="Timer function.">SuperLU_timer_</a> ();
<a name="l00343"></a>00343 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#72be96e75e58564c4322ef9ef73ca65f">sp_ienv</a> (<span class="keywordtype">int</span>);
<a name="l00344"></a>00344 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="lsame_8c.html#6de88349c1fe993f318dd0643af908c3">lsame_</a> (<span class="keywordtype">char</span> *, <span class="keywordtype">char</span> *);
<a name="l00345"></a>00345 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#8ddc46fddd8c0c53fc9e77fefdf9a456">xerbla_</a> (<span class="keywordtype">char</span> *, <span class="keywordtype">int</span> *);
<a name="l00346"></a>00346 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#b0dfb6551008bcad5e758defdbd13006" title="Fills an integer array with a given value.">ifill</a> (<span class="keywordtype">int</span> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);
<a name="l00347"></a>00347 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#01ded59744addeefd265dbb22d9f37d0">snode_profile</a> (<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00348"></a>00348 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#c33e407326ae1dc222aee7ff08f322cf">super_stats</a> (<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00349"></a>00349 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#9e29ce75ab694aa7fdb32b7644f9da69" title="Check whether repfnz[] == EMPTY after reset.">check_repfnz</a>(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00350"></a>00350 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#47292875a12f5601efa82a4350656db8" title="Print a summary of the testing results.">PrintSumm</a> (<span class="keywordtype">char</span> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>);
<a name="l00351"></a>00351 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#3b979ab4f4e75bdc1b89106dde6c8d72">StatInit</a>(<a class="code" href="structSuperLUStat__t.html">SuperLUStat_t</a> *);
<a name="l00352"></a>00352 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#a157fecae472b8ef5ce79bd59876099d">StatPrint</a> (<a class="code" href="structSuperLUStat__t.html">SuperLUStat_t</a> *);
<a name="l00353"></a>00353 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#b0fb3345d479a7ac24f75f0e64bdff4b">StatFree</a>(<a class="code" href="structSuperLUStat__t.html">SuperLUStat_t</a> *);
<a name="l00354"></a>00354 <span class="keyword">extern</span> <span class="keywordtype">void</span> <a class="code" href="slu__util_8h.html#48208ca68e95c765c0c55c12b196d79e" title="Diagnostic print of segment info after panel_dfs().">print_panel_seg</a>(<span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *, <span class="keywordtype">int</span> *);
<a name="l00355"></a>00355 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#8a3ba6cbe163f9c12f6f10ee8ba98fc7">print_int_vec</a>(<span class="keywordtype">char</span> *,<span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00356"></a>00356 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="slu__util_8h.html#de363dcb4babb66fa0e5f51bd2e6e42c">slu_PrintInt10</a>(<span class="keywordtype">char</span> *, <span class="keywordtype">int</span>, <span class="keywordtype">int</span> *);
<a name="l00357"></a>00357
<a name="l00358"></a>00358 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00359"></a>00359 <span class="preprocessor"></span> }
<a name="l00360"></a>00360 <span class="preprocessor">#endif</span>
<a name="l00361"></a>00361 <span class="preprocessor"></span>
<a name="l00362"></a>00362 <span class="preprocessor">#endif </span><span class="comment">/* __SUPERLU_UTIL */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 22 10:23:47 2010 for SuperLU by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.5 </small></address>
</body>
</html>