colamd_8h-source.html

来自「SuperLU is a general purpose library for」· HTML 代码 · 共 220 行 · 第 1/2 页

HTML
220
字号
<a name="l00146"></a>00146 <a name="l00147"></a><a class="code" href="structColamd__Row__struct.html">00147</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structColamd__Row__struct.html">Colamd_Row_struct</a><a name="l00148"></a>00148 {<a name="l00149"></a><a class="code" href="structColamd__Row__struct.html#24285056395b1cf2e28ea3810d67d09d">00149</a>     <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#24285056395b1cf2e28ea3810d67d09d">start</a> ;         <span class="comment">/* index for A of first col in this row */</span><a name="l00150"></a><a class="code" href="structColamd__Row__struct.html#4cf6076c6aeab980aa2add1c24913c35">00150</a>     <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#4cf6076c6aeab980aa2add1c24913c35">length</a> ;        <span class="comment">/* number of principal columns in this row */</span><a name="l00151"></a>00151     <span class="keyword">union</span><a name="l00152"></a>00152 <span class="keyword">    </span>{<a name="l00153"></a><a class="code" href="structColamd__Row__struct.html#01e336d70f1cbe2ac615d4b23c480ecd">00153</a>         <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#01e336d70f1cbe2ac615d4b23c480ecd">degree</a> ;    <span class="comment">/* number of principal &amp; non-principal columns in row */</span><a name="l00154"></a><a class="code" href="structColamd__Row__struct.html#cb0d165350cbbdad8dc4260bd48b1f80">00154</a>         <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#cb0d165350cbbdad8dc4260bd48b1f80">p</a> ;         <span class="comment">/* used as a row pointer in init_rows_cols () */</span><a name="l00155"></a>00155     } <a class="code" href="structColamd__Row__struct.html#2562d9df5820b202cd5e83696fc053f5">shared1</a> ;<a name="l00156"></a>00156     <span class="keyword">union</span><a name="l00157"></a>00157 <span class="keyword">    </span>{<a name="l00158"></a><a class="code" href="structColamd__Row__struct.html#00b8bd69ce2b84d9b75c5503d80c5080">00158</a>         <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#00b8bd69ce2b84d9b75c5503d80c5080">mark</a> ;      <span class="comment">/* for computing set differences and marking dead rows*/</span><a name="l00159"></a><a class="code" href="structColamd__Row__struct.html#f7bf4c87b04e63e6b1abc2c86e8d1376">00159</a>         <span class="keywordtype">int</span> <a class="code" href="structColamd__Row__struct.html#f7bf4c87b04e63e6b1abc2c86e8d1376">first_column</a> ;<span class="comment">/* first column in row (used in garbage collection) */</span><a name="l00160"></a>00160     } <a class="code" href="structColamd__Row__struct.html#eb2ca96dcadf6490c614ed559acef59a">shared2</a> ;<a name="l00161"></a>00161 <a name="l00162"></a>00162 } <a class="code" href="structColamd__Row__struct.html">Colamd_Row</a> ;<a name="l00163"></a>00163 <a name="l00164"></a>00164 <span class="comment">/* ========================================================================== */</span><a name="l00165"></a>00165 <span class="comment">/* === Colamd recommended memory size ======================================= */</span><a name="l00166"></a>00166 <span class="comment">/* ========================================================================== */</span><a name="l00167"></a>00167 <a name="l00168"></a>00168 <span class="comment">/*</span><a name="l00169"></a>00169 <span class="comment">    The recommended length Alen of the array A passed to colamd is given by</span><a name="l00170"></a>00170 <span class="comment">    the COLAMD_RECOMMENDED (nnz, n_row, n_col) macro.  It returns -1 if any</span><a name="l00171"></a>00171 <span class="comment">    argument is negative.  2*nnz space is required for the row and column</span><a name="l00172"></a>00172 <span class="comment">    indices of the matrix. COLAMD_C (n_col) + COLAMD_R (n_row) space is</span><a name="l00173"></a>00173 <span class="comment">    required for the Col and Row arrays, respectively, which are internal to</span><a name="l00174"></a>00174 <span class="comment">    colamd.  An additional n_col space is the minimal amount of "elbow room",</span><a name="l00175"></a>00175 <span class="comment">    and nnz/5 more space is recommended for run time efficiency.</span><a name="l00176"></a>00176 <span class="comment"></span><a name="l00177"></a>00177 <span class="comment">    This macro is not needed when using symamd.</span><a name="l00178"></a>00178 <span class="comment"></span><a name="l00179"></a>00179 <span class="comment">    Explicit typecast to int added Sept. 23, 2002, COLAMD version 2.2, to avoid</span><a name="l00180"></a>00180 <span class="comment">    gcc -pedantic warning messages.</span><a name="l00181"></a>00181 <span class="comment">*/</span><a name="l00182"></a>00182 <a name="l00183"></a><a class="code" href="colamd_8h.html#339fb9b07ed315667cc4542c15116c83">00183</a> <span class="preprocessor">#define COLAMD_C(n_col) ((int) (((n_col) + 1) * sizeof (Colamd_Col) / sizeof (int)))</span><a name="l00184"></a><a class="code" href="colamd_8h.html#52e8a8827c11d9c2a1f1b87e09bc8dc0">00184</a> <span class="preprocessor"></span><span class="preprocessor">#define COLAMD_R(n_row) ((int) (((n_row) + 1) * sizeof (Colamd_Row) / sizeof (int)))</span><a name="l00185"></a>00185 <span class="preprocessor"></span><a name="l00186"></a><a class="code" href="colamd_8h.html#a6980d68bd04f7567d7d0bd40b244c2f">00186</a> <span class="preprocessor">#define COLAMD_RECOMMENDED(nnz, n_row, n_col)                                 \</span><a name="l00187"></a>00187 <span class="preprocessor">(                                                                             \</span><a name="l00188"></a>00188 <span class="preprocessor">((nnz) &lt; 0 || (n_row) &lt; 0 || (n_col) &lt; 0)                                     \</span><a name="l00189"></a>00189 <span class="preprocessor">?                                                                             \</span><a name="l00190"></a>00190 <span class="preprocessor">    (-1)                                                                      \</span><a name="l00191"></a>00191 <span class="preprocessor">:                                                                             \</span><a name="l00192"></a>00192 <span class="preprocessor">    (2 * (nnz) + COLAMD_C (n_col) + COLAMD_R (n_row) + (n_col) + ((nnz) / 5)) \</span><a name="l00193"></a>00193 <span class="preprocessor">)</span><a name="l00194"></a>00194 <span class="preprocessor"></span><a name="l00195"></a>00195 <span class="comment">/* ========================================================================== */</span><a name="l00196"></a>00196 <span class="comment">/* === Prototypes of user-callable routines ================================= */</span><a name="l00197"></a>00197 <span class="comment">/* ========================================================================== */</span><a name="l00198"></a>00198 <a name="l00199"></a>00199 <span class="keywordtype">int</span> <a class="code" href="colamd_8c.html#ac7214b99bcf4db1b13547521367817f">colamd_recommended</a>          <span class="comment">/* returns recommended value of Alen, */</span><a name="l00200"></a>00200                                 <span class="comment">/* or (-1) if input arguments are erroneous */</span><a name="l00201"></a>00201 (<a name="l00202"></a>00202     <span class="keywordtype">int</span> nnz,                    <span class="comment">/* nonzeros in A */</span><a name="l00203"></a>00203     <span class="keywordtype">int</span> n_row,                  <span class="comment">/* number of rows in A */</span><a name="l00204"></a>00204     <span class="keywordtype">int</span> n_col                   <span class="comment">/* number of columns in A */</span><a name="l00205"></a>00205 ) ;<a name="l00206"></a>00206 <a name="l00207"></a>00207 <span class="keywordtype">void</span> <a class="code" href="colamd_8c.html#cd15277a8a063dd0586e280004a92c89">colamd_set_defaults</a>        <span class="comment">/* sets default parameters */</span><a name="l00208"></a>00208 (                               <span class="comment">/* knobs argument is modified on output */</span><a name="l00209"></a>00209     <span class="keywordtype">double</span> knobs [<a class="code" href="colamd_8h.html#e92bb10d09f7cd004f07d1baddf90548">COLAMD_KNOBS</a>] <span class="comment">/* parameter settings for colamd */</span><a name="l00210"></a>00210 ) ;<a name="l00211"></a>00211 <a name="l00212"></a>00212 <span class="keywordtype">int</span> <a class="code" href="colamd_8c.html#4ace2482b681af56de48dd3ba8971baf">colamd</a>                      <span class="comment">/* returns (1) if successful, (0) otherwise*/</span><a name="l00213"></a>00213 (                               <span class="comment">/* A and p arguments are modified on output */</span><a name="l00214"></a>00214     <span class="keywordtype">int</span> n_row,                  <span class="comment">/* number of rows in A */</span><a name="l00215"></a>00215     <span class="keywordtype">int</span> n_col,                  <span class="comment">/* number of columns in A */</span><a name="l00216"></a>00216     <span class="keywordtype">int</span> Alen,                   <span class="comment">/* size of the array A */</span><a name="l00217"></a>00217     <span class="keywordtype">int</span> A [],                   <span class="comment">/* row indices of A, of size Alen */</span><a name="l00218"></a>00218     <span class="keywordtype">int</span> p [],                   <span class="comment">/* column pointers of A, of size n_col+1 */</span><a name="l00219"></a>00219     <span class="keywordtype">double</span> knobs [<a class="code" href="colamd_8h.html#e92bb10d09f7cd004f07d1baddf90548">COLAMD_KNOBS</a>],<span class="comment">/* parameter settings for colamd */</span><a name="l00220"></a>00220     <span class="keywordtype">int</span> stats [<a class="code" href="colamd_8h.html#411703fc0a994b83ec0e00df1abfc0f7">COLAMD_STATS</a>]    <span class="comment">/* colamd output statistics and error codes */</span><a name="l00221"></a>00221 ) ;<a name="l00222"></a>00222 <a name="l00223"></a>00223 <span class="keywordtype">int</span> <a class="code" href="colamd_8c.html#e81243e57d577e17400b3f532aa4f1e9">symamd</a>                              <span class="comment">/* return (1) if OK, (0) otherwise */</span><a name="l00224"></a>00224 (<a name="l00225"></a>00225     <span class="keywordtype">int</span> n,                              <span class="comment">/* number of rows and columns of A */</span><a name="l00226"></a>00226     <span class="keywordtype">int</span> A [],                           <span class="comment">/* row indices of A */</span><a name="l00227"></a>00227     <span class="keywordtype">int</span> p [],                           <span class="comment">/* column pointers of A */</span><a name="l00228"></a>00228     <span class="keywordtype">int</span> perm [],                        <span class="comment">/* output permutation, size n_col+1 */</span><a name="l00229"></a>00229     <span class="keywordtype">double</span> knobs [<a class="code" href="colamd_8h.html#e92bb10d09f7cd004f07d1baddf90548">COLAMD_KNOBS</a>],        <span class="comment">/* parameters (uses defaults if NULL) */</span><a name="l00230"></a>00230     <span class="keywordtype">int</span> stats [<a class="code" href="colamd_8h.html#411703fc0a994b83ec0e00df1abfc0f7">COLAMD_STATS</a>],           <span class="comment">/* output statistics and error codes */</span><a name="l00231"></a>00231     <span class="keywordtype">void</span> * (*allocate) (size_t, size_t),<a name="l00232"></a>00232                                         <span class="comment">/* pointer to calloc (ANSI C) or */</span><a name="l00233"></a>00233                                         <span class="comment">/* mxCalloc (for MATLAB mexFunction) */</span><a name="l00234"></a>00234     <span class="keywordtype">void</span> (*release) (<span class="keywordtype">void</span> *)<a name="l00235"></a>00235                                         <span class="comment">/* pointer to free (ANSI C) or */</span><a name="l00236"></a>00236                                         <span class="comment">/* mxFree (for MATLAB mexFunction) */</span><a name="l00237"></a>00237 ) ;<a name="l00238"></a>00238 <a name="l00239"></a>00239 <span class="keywordtype">void</span> <a class="code" href="colamd_8c.html#85f2c13be93dea98e624144272d00eed">colamd_report</a><a name="l00240"></a>00240 (<a name="l00241"></a>00241     <span class="keywordtype">int</span> stats [<a class="code" href="colamd_8h.html#411703fc0a994b83ec0e00df1abfc0f7">COLAMD_STATS</a>]<a name="l00242"></a>00242 ) ;<a name="l00243"></a>00243 <a name="l00244"></a>00244 <span class="keywordtype">void</span> <a class="code" href="colamd_8c.html#df3bb99ff64711d528dafe21fd450512">symamd_report</a><a name="l00245"></a>00245 (<a name="l00246"></a>00246     <span class="keywordtype">int</span> stats [<a class="code" href="colamd_8h.html#411703fc0a994b83ec0e00df1abfc0f7">COLAMD_STATS</a>]<a name="l00247"></a>00247 ) ;<a name="l00248"></a>00248 <a name="l00249"></a>00249 <span class="preprocessor">#endif </span><span class="comment">/* COLAMD_H */</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Aug 1 22:40:39 2008 for SuperLU by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?