<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta name="robots" content="noindex"> <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>dist.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.5 on Mon Oct 14 14:16:36 2002 --> <center> <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="pages.html">Related Pages</a> </center> <hr><h1>dist.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// dist.h</font> 00003 <font class="comment">//</font> 00004 <font class="comment">// Copyright (C) 1996 Limit Point Systems, Inc.</font> 00005 <font class="comment">//</font> 00006 <font class="comment">// Author: Curtis Janssen <cljanss@limitpt.com></font> 00007 <font class="comment">// Maintainer: LPS</font> 00008 <font class="comment">//</font> 00009 <font class="comment">// This file is part of the SC Toolkit.</font> 00010 <font class="comment">//</font> 00011 <font class="comment">// The SC Toolkit is free software; you can redistribute it and/or modify</font> 00012 <font class="comment">// it under the terms of the GNU Library General Public License as published by</font> 00013 <font class="comment">// the Free Software Foundation; either version 2, or (at your option)</font> 00014 <font class="comment">// any later version.</font> 00015 <font class="comment">//</font> 00016 <font class="comment">// The SC Toolkit is distributed in the hope that it will be useful,</font> 00017 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00018 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00019 <font class="comment">// GNU Library General Public License for more details.</font> 00020 <font class="comment">//</font> 00021 <font class="comment">// You should have received a copy of the GNU Library General Public License</font> 00022 <font class="comment">// along with the SC Toolkit; see the file COPYING.LIB. If not, write to</font> 00023 <font class="comment">// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.</font> 00024 <font class="comment">//</font> 00025 <font class="comment">// The U.S. Government is granted a limited license as per AL 91-7.</font> 00026 <font class="comment">//</font> 00027 00028 <font class="preprocessor">#ifdef __GNUC__</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00030 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00031 <font class="preprocessor"></font> 00032 <font class="preprocessor">#ifndef _math_scmat_dist_h</font> 00033 <font class="preprocessor"></font><font class="preprocessor">#define _math_scmat_dist_h</font> 00034 <font class="preprocessor"></font> 00035 <font class="preprocessor">#include <util/group/message.h></font> 00036 <font class="preprocessor">#include <util/group/mstate.h></font> 00037 00038 <font class="preprocessor">#include <math/scmat/block.h></font> 00039 <font class="preprocessor">#include <math/scmat/matrix.h></font> 00040 <font class="preprocessor">#include <math/scmat/abstract.h></font> 00041 00042 <font class="keyword">namespace </font>sc { 00043 <a name="l00046"></a><a class="code" href="class_sc__DistSCMatrixKit.html">00046</a> <font class="keyword">class </font>DistSCMatrixKit: <font class="keyword">public</font> SCMatrixKit { 00047 <font class="keyword">public</font>: 00048 DistSCMatrixKit(<font class="keyword">const</font> Ref<MessageGrp> &grp = 0); 00049 DistSCMatrixKit(<font class="keyword">const</font> Ref<KeyVal>&); 00050 ~DistSCMatrixKit(); 00051 SCMatrix* <a class="code" href="class_sc__DistSCMatrixKit.html#a3">matrix</a>(<font class="keyword">const</font> RefSCDimension&,<font class="keyword">const</font> RefSCDimension&); 00052 SymmSCMatrix* symmmatrix(<font class="keyword">const</font> RefSCDimension&); 00053 DiagSCMatrix* diagmatrix(<font class="keyword">const</font> RefSCDimension&); 00054 SCVector* vector(<font class="keyword">const</font> RefSCDimension&); 00055 }; 00056 00057 00058 <font class="keyword">class </font>DistSCVector: <font class="keyword">public</font> SCVector { 00059 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCMatrix; 00060 <font class="keyword">friend</font> <font class="keyword">class </font>DistSymmSCMatrix; 00061 <font class="keyword">friend</font> <font class="keyword">class </font>DistDiagSCMatrix; 00062 <font class="keyword">protected</font>: 00063 Ref<SCMatrixBlockList> blocklist; 00064 00065 <font class="keywordtype">void</font> init_blocklist(); 00066 <font class="keywordtype">double</font> *find_element(<font class="keywordtype">int</font> i) <font class="keyword">const</font>; 00067 <font class="keywordtype">int</font> element_to_node(<font class="keywordtype">int</font> i) <font class="keyword">const</font>; 00068 <font class="keywordtype">int</font> block_to_node(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00069 Ref<SCMatrixBlock> block_to_block(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00070 <font class="keywordtype">void</font> error(<font class="keyword">const</font> <font class="keywordtype">char</font> *); 00071 <font class="keyword">public</font>: 00072 DistSCVector(<font class="keyword">const</font> RefSCDimension&, DistSCMatrixKit*); 00073 ~DistSCVector(); 00074 <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>*); 00075 <font class="keywordtype">void</font> assign_v(SCVector*a); 00076 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>* v) <font class="keyword">const</font>; 00077 <font class="keywordtype">void</font> convert(SCVector *); 00078 00079 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00080 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00081 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00082 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCVector*); 00083 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCMatrix*m); 00084 <font class="keywordtype">double</font> scalar_product(SCVector*); 00085 <font class="keywordtype">void</font> accumulate_product_rv(SCMatrix *, SCVector *); 00086 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&); 00087 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00088 SCVector*); 00089 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00090 SCVector*,SCVector*); 00091 <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00092 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00093 00094 Ref<SCMatrixSubblockIter> local_blocks(SCMatrixSubblockIter::Access); 00095 Ref<SCMatrixSubblockIter> all_blocks(SCMatrixSubblockIter::Access); 00096 00097 Ref<DistSCMatrixKit> skit(); 00098 }; 00099 00100 <font class="keyword">class </font>DistSCMatrix: <font class="keyword">public</font> SCMatrix { 00101 <font class="keyword">friend</font> <font class="keyword">class </font>DistSymmSCMatrix; 00102 <font class="keyword">friend</font> <font class="keyword">class </font>DistDiagSCMatrix; 00103 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCVector; 00104 <font class="keyword">protected</font>: 00105 Ref<SCMatrixBlockList> blocklist; 00106 00107 <font class="keywordtype">int</font> vecoff; 00108 <font class="keywordtype">int</font> nvec; 00109 <font class="keywordtype">double</font> **vec; 00110 <font class="keyword">protected</font>: 00111 <font class="comment">// utility functions</font> 00112 <font class="keywordtype">void</font> init_blocklist(); 00113 <font class="keywordtype">void</font> error(<font class="keyword">const</font> <font class="keywordtype">char</font> *); 00114 <font class="keywordtype">double</font> *find_element(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00115 <font class="keywordtype">int</font> element_to_node(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00116 <font class="keywordtype">int</font> block_to_node(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00117 Ref<SCMatrixBlock> block_to_block(<font class="keywordtype">int</font>, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00118 Ref<SCBlockInfo> rowblocks()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d1->blocks(); } 00119 Ref<SCBlockInfo> colblocks()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d2->blocks(); } 00120 00121 <font class="keyword">enum</font> VecOp {CopyFromVec, CopyToVec, AccumFromVec, AccumToVec}; 00122 <font class="keyword">enum</font> Form { Row, Col } form; 00123 <font class="keywordtype">void</font> create_vecform(Form, <font class="keywordtype">int</font> nvec = -1); 00124 <font class="keywordtype">void</font> delete_vecform(); 00125 <font class="keywordtype">void</font> vecform_op(VecOp op, <font class="keywordtype">int</font> *ivec = 0); 00126 <font class="keywordtype">void</font> vecform_zero(); 00127 <font class="keyword">public</font>: 00128 DistSCMatrix(<font class="keyword">const</font> RefSCDimension&, <font class="keyword">const</font> RefSCDimension&, 00129 DistSCMatrixKit*); 00130 ~DistSCMatrix(); 00131 00132 <font class="comment">// implementations and overrides of virtual functions</font> 00133 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00134 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00135 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00136 SCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00137 <font class="keywordtype">void</font> assign_subblock(SCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>=0,<font class="keywordtype">int</font>=0); 00138 <font class="keywordtype">void</font> accumulate_subblock(SCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>=0,<font class="keywordtype">int</font>=0); 00139 SCVector * get_row(<font class="keywordtype">int</font> i); 00140 SCVector * get_column(<font class="keywordtype">int</font> i); 00141 <font class="keywordtype">void</font> assign_row(SCVector *v, <font class="keywordtype">int</font> i); 00142 <font class="keywordtype">void</font> assign_column(SCVector *v, <font class="keywordtype">int</font> i); 00143 <font class="keywordtype">void</font> accumulate_row(SCVector *v, <font class="keywordtype">int</font> i); 00144 <font class="keywordtype">void</font> accumulate_column(SCVector *v, <font class="keywordtype">int</font> i); 00145 00146 <font class="keywordtype">void</font> accumulate_outer_product(SCVector*,SCVector*); 00147 <font class="keywordtype">void</font> accumulate_product_rr(SCMatrix*,SCMatrix*); 00148 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCMatrix*); 00149 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SymmSCMatrix*); 00150 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> DiagSCMatrix*); 00151 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCVector*); 00152 <font class="keywordtype">void</font> transpose_this(); 00153 <font class="keywordtype">double</font> invert_this(); 00154 <font class="keywordtype">double</font> solve_this(SCVector*); 00155 <font class="keywordtype">double</font> determ_this(); 00156 <font class="keywordtype">double</font> trace(); 00157 <font class="keywordtype">void</font> gen_invert_this(); 00158 <font class="keywordtype">void</font> schmidt_orthog(SymmSCMatrix*,<font class="keywordtype">int</font>); 00159 <font class="keywordtype">int</font> schmidt_orthog_tol(SymmSCMatrix*, <font class="keywordtype">double</font> tol, <font class="keywordtype">double</font> *res=0); 00160 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&); 00161 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00162 SCMatrix*); 00163 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00164 SCMatrix*,SCMatrix*); 00165 <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00166 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10); 00167 <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00168 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00169 00170 Ref<SCMatrixSubblockIter> local_blocks(SCMatrixSubblockIter::Access); 00171 Ref<SCMatrixSubblockIter> all_blocks(SCMatrixSubblockIter::Access); 00172 00173 Ref<DistSCMatrixKit> skit(); 00174 }; 00175 00176 <font class="keyword">class </font>DistSymmSCMatrix: <font class="keyword">public</font> SymmSCMatrix { 00177 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCMatrix; 00178 <font class="keyword">friend</font> <font class="keyword">class </font>DistDiagSCMatrix; 00179 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCVector; 00180 <font class="keyword">protected</font>: 00181 Ref<SCMatrixBlockList> blocklist; 00182 <font class="keyword">protected</font>: 00183 <font class="comment">// utility functions</font> 00184 <font class="keywordtype">void</font> init_blocklist(); 00185 <font class="keywordtype">double</font> *find_element(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00186 <font class="keywordtype">int</font> element_to_node(<font class="keywordtype">int</font> i, <font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00187 <font class="keywordtype">int</font> block_to_node(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00188 Ref<SCMatrixBlock> block_to_block(<font class="keywordtype">int</font>, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00189 00190 <font class="keywordtype">void</font> error(<font class="keyword">const</font> <font class="keywordtype">char</font> *msg); 00191 <font class="keyword">public</font>: 00192 DistSymmSCMatrix(<font class="keyword">const</font> RefSCDimension&, DistSCMatrixKit*); 00193 ~DistSymmSCMatrix(); 00194 00195 <font class="comment">// implementations and overrides of virtual functions</font> 00196 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00197 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00198 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00199 00200 SCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00201 SymmSCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00202 <font class="keywordtype">void</font> assign_subblock(SCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00203 <font class="keywordtype">void</font> assign_subblock(SymmSCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00204 <font class="keywordtype">void</font> accumulate_subblock(SCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00205 <font class="keywordtype">void</font> accumulate_subblock(SymmSCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00206 SCVector * get_row(<font class="keywordtype">int</font> i); 00207 <font class="keywordtype">void</font> assign_row(SCVector *v, <font class="keywordtype">int</font> i); 00208 <font class="keywordtype">void</font> accumulate_row(SCVector *v, <font class="keywordtype">int</font> i); 00209 00210 <font class="keywordtype">void</font> accumulate_product_rr(SCMatrix*,SCMatrix*); 00211 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SymmSCMatrix*); 00212 <font class="keywordtype">double</font> invert_this(); 00213 <font class="keywordtype">double</font> solve_this(SCVector*); 00214 <font class="keywordtype">double</font> trace(); 00215 <font class="keywordtype">double</font> determ_this(); 00216 <font class="keywordtype">void</font> gen_invert_this(); 00217 00218 <font class="keywordtype">void</font> diagonalize(DiagSCMatrix*,SCMatrix*); 00219 <font class="keywordtype">void</font> accumulate_symmetric_sum(SCMatrix*); 00220 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&); 00221 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00222 SymmSCMatrix*); 00223 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00224 SymmSCMatrix*,SymmSCMatrix*); 00225 00226 <font class="keyword">virtual</font> <font class="keywordtype">void</font> convert_accumulate(SymmSCMatrix*); 00227 00228 Ref<SCMatrixSubblockIter> local_blocks(SCMatrixSubblockIter::Access); 00229 Ref<SCMatrixSubblockIter> all_blocks(SCMatrixSubblockIter::Access); 00230 00231 Ref<DistSCMatrixKit> skit(); 00232 }; 00233 00234 <font class="keyword">class </font>DistDiagSCMatrix: <font class="keyword">public</font> DiagSCMatrix { 00235 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCMatrix; 00236 <font class="keyword">friend</font> <font class="keyword">class </font>DistSymmSCMatrix; 00237 <font class="keyword">friend</font> <font class="keyword">class </font>DistSCVector; 00238 <font class="keyword">protected</font>: 00239 Ref<SCMatrixBlockList> blocklist; 00240 00241 <font class="keywordtype">void</font> init_blocklist(); 00242 <font class="keywordtype">double</font> *find_element(<font class="keywordtype">int</font> i) <font class="keyword">const</font>; 00243 <font class="keywordtype">int</font> element_to_node(<font class="keywordtype">int</font> i) <font class="keyword">const</font>; 00244 <font class="keywordtype">int</font> block_to_node(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00245 Ref<SCMatrixBlock> block_to_block(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00246 <font class="keywordtype">void</font> error(<font class="keyword">const</font> <font class="keywordtype">char</font> *msg); 00247 <font class="keyword">public</font>: 00248 DistDiagSCMatrix(<font class="keyword">const</font> RefSCDimension&, DistSCMatrixKit*); 00249 ~DistDiagSCMatrix(); 00250 00251 <font class="comment">// implementations and overrides of virtual functions</font> 00252 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00253 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00254 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>); 00255 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> DiagSCMatrix*); 00256 <font class="keywordtype">double</font> invert_this(); 00257 <font class="keywordtype">double</font> determ_this(); 00258 <font class="keywordtype">double</font> trace(); 00259 <font class="keywordtype">void</font> gen_invert_this(); 00260 00261 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&); 00262 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00263 DiagSCMatrix*); 00264 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00265 DiagSCMatrix*,DiagSCMatrix*); 00266 00267 Ref<SCMatrixSubblockIter> local_blocks(SCMatrixSubblockIter::Access); 00268 Ref<SCMatrixSubblockIter> all_blocks(SCMatrixSubblockIter::Access); 00269 00270 Ref<DistSCMatrixKit> skit(); 00271 }; 00272 00273 <font class="keyword">class </font>DistSCMatrixListSubblockIter: <font class="keyword">public</font> SCMatrixListSubblockIter { 00274 <font class="keyword">protected</font>: 00275 Ref<MessageGrp> grp_; 00276 StateSend out_; 00277 StateRecv in_; 00278 <font class="keywordtype">int</font> step_; 00279 Ref<SCMatrixBlockList> locallist_; 00280 00281 <font class="keywordtype">void</font> maybe_advance_list(); 00282 <font class="keywordtype">void</font> advance_list(); 00283 <font class="keyword">public</font>: 00284 DistSCMatrixListSubblockIter(Access, 00285 <font class="keyword">const</font> Ref<SCMatrixBlockList> &locallist, 00286 <font class="keyword">const</font> Ref<MessageGrp> &grp); 00287 <font class="keywordtype">void</font> begin(); 00288 <font class="keywordtype">void</font> next(); 00289 ~DistSCMatrixListSubblockIter(); 00290 }; 00291 00292 } 00293 00294 <font class="preprocessor">#endif</font> 00295 <font class="preprocessor"></font> 00296 <font class="comment">// Local Variables:</font> 00297 <font class="comment">// mode: c++</font> 00298 <font class="comment">// c-file-style: "CLJ"</font> 00299 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:36 2002 for <a href="http://aros.ca.sandia.gov/~cljanss/mpqc">MPQC</a> 2.1.2 using the documentation package <a href="http://www.stack.nl/~dimitri/doxygen/index.html">Doxygen</a> 1.2.5. </small> </address> </body> </html>