Sophie

Sophie

distrib > Mandriva > 9.1 > ppc > media > contrib > by-pkgid > 263386785cefb9ae5d63b926d214d809 > files > 1252

mpqc-2.1.2-4mdk.ppc.rpm

<!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>local.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:37 2002 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; </center>
<hr><h1>local.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font>
00002 <font class="comment">// local.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 &lt;cljanss@limitpt.com&gt;</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_local_h</font>
00033 <font class="preprocessor"></font><font class="preprocessor">#define _math_scmat_local_h</font>
00034 <font class="preprocessor"></font>
00035 <font class="preprocessor">#include &lt;math/scmat/block.h&gt;</font>
00036 <font class="preprocessor">#include &lt;math/scmat/matrix.h&gt;</font>
00037 <font class="preprocessor">#include &lt;math/scmat/abstract.h&gt;</font>
00038 
00039 <font class="keyword">namespace </font>sc {
00040 
00041 <font class="keyword">class </font>LocalSCMatrixKit;
00042 <font class="keyword">class </font>LocalSCVector;
00043 <font class="keyword">class </font>LocalSCMatrix;
00044 <font class="keyword">class </font>LocalSymmSCMatrix;
00045 <font class="keyword">class </font>LocalDiagSCMatrix;
00046 
<a name="l00049"></a><a class="code" href="class_sc__LocalSCMatrixKit.html">00049</a> <font class="keyword">class </font>LocalSCMatrixKit: <font class="keyword">public</font> SCMatrixKit {
00050   <font class="keyword">public</font>:
00051     LocalSCMatrixKit();
00052     LocalSCMatrixKit(<font class="keyword">const</font> Ref&lt;KeyVal&gt;&amp;);
00053     ~LocalSCMatrixKit();
00054     SCMatrix* <a class="code" href="class_sc__LocalSCMatrixKit.html#a3">matrix</a>(<font class="keyword">const</font> RefSCDimension&amp;,<font class="keyword">const</font> RefSCDimension&amp;);
00055     SymmSCMatrix* symmmatrix(<font class="keyword">const</font> RefSCDimension&amp;);
00056     DiagSCMatrix* diagmatrix(<font class="keyword">const</font> RefSCDimension&amp;);
00057     SCVector* vector(<font class="keyword">const</font> RefSCDimension&amp;);
00058 };
00059 
00060 <font class="keyword">class </font>LocalSCVector: <font class="keyword">public</font> SCVector {
00061     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCMatrix;
00062     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSymmSCMatrix;
00063     <font class="keyword">friend</font> <font class="keyword">class </font>LocalDiagSCMatrix;
00064   <font class="keyword">private</font>:
00065     Ref&lt;SCVectorSimpleBlock&gt; block;
00066 
00067     <font class="keywordtype">void</font> resize(<font class="keywordtype">int</font>);
00068   <font class="keyword">public</font>:
00069     LocalSCVector();
00070     LocalSCVector(<font class="keyword">const</font> RefSCDimension&amp;,LocalSCMatrixKit*);
00071     ~LocalSCVector();
00072     <font class="keywordtype">void</font> assign_val(<font class="keywordtype">double</font>);
00073     <font class="keywordtype">void</font> assign_v(SCVector*);
00074     <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>*);
00075 
00076     <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00077     <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00078     <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00079     <font class="keywordtype">void</font> accumulate_product_sv(SymmSCMatrix*,SCVector*);
00080     <font class="keywordtype">void</font> accumulate_product_rv(SCMatrix*,SCVector*);
00081     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCVector*);
00082     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCMatrix*);
00083     <font class="keywordtype">double</font> scalar_product(SCVector*);
00084     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp&gt;&amp;);
00085     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp2&gt;&amp;,
00086                     SCVector*);
00087     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp3&gt;&amp;,
00088                     SCVector*,SCVector*);
00089     <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,
00090                 std::ostream&amp; out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>;
00091 
00092     <font class="comment">// return a pointer to the data for fast access</font>
00093     <font class="keywordtype">double</font> *get_data();
00094     
00095     Ref&lt;SCMatrixSubblockIter&gt; local_blocks(SCMatrixSubblockIter::Access);
00096     Ref&lt;SCMatrixSubblockIter&gt; all_blocks(SCMatrixSubblockIter::Access);
00097 };
00098 
00099 <font class="keyword">class </font>LocalSCMatrix: <font class="keyword">public</font> SCMatrix {
00100     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSymmSCMatrix;
00101     <font class="keyword">friend</font> <font class="keyword">class </font>LocalDiagSCMatrix;
00102     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCVector;
00103   <font class="keyword">private</font>:
00104     Ref&lt;SCMatrixRectBlock&gt; block;
00105     <font class="keywordtype">double</font>** rows;
00106   <font class="keyword">private</font>:
00107     <font class="comment">// utility functions</font>
00108     <font class="keywordtype">int</font> compute_offset(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00109     <font class="keywordtype">void</font> resize(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00110   <font class="keyword">public</font>:
00111     LocalSCMatrix(<font class="keyword">const</font> RefSCDimension&amp;,<font class="keyword">const</font> RefSCDimension&amp;,
00112                   LocalSCMatrixKit*);
00113     ~LocalSCMatrix();
00114 
00115     <font class="comment">// implementations and overrides of virtual functions</font>
00116     <font class="keywordtype">void</font> assign_val(<font class="keywordtype">double</font>);
00117     <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00118     <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00119     <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00120     SCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00121     <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);
00122     <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);
00123     SCVector * get_row(<font class="keywordtype">int</font> i);
00124     SCVector * get_column(<font class="keywordtype">int</font> i);
00125     <font class="keywordtype">void</font> assign_row(SCVector *v, <font class="keywordtype">int</font> i);
00126     <font class="keywordtype">void</font> assign_column(SCVector *v, <font class="keywordtype">int</font> i);
00127     <font class="keywordtype">void</font> accumulate_row(SCVector *v, <font class="keywordtype">int</font> i);
00128     <font class="keywordtype">void</font> accumulate_column(SCVector *v, <font class="keywordtype">int</font> i);
00129     <font class="keywordtype">void</font> accumulate_outer_product(SCVector*,SCVector*);
00130     <font class="keywordtype">void</font> accumulate_product_rr(SCMatrix*,SCMatrix*);
00131     <font class="keywordtype">void</font> accumulate_product_rs(SCMatrix*,SymmSCMatrix*);
00132     <font class="keywordtype">void</font> accumulate_product_rd(SCMatrix*,DiagSCMatrix*);
00133     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCMatrix*);
00134     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SymmSCMatrix*);
00135     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> DiagSCMatrix*);
00136     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SCVector*);
00137     <font class="keywordtype">void</font> transpose_this();
00138     <font class="keywordtype">double</font> invert_this();
00139     <font class="keywordtype">void</font> svd_this(SCMatrix *U, DiagSCMatrix *sigma, SCMatrix *V);
00140     <font class="keywordtype">double</font> solve_this(SCVector*);
00141     <font class="keywordtype">double</font> determ_this();
00142     <font class="keywordtype">double</font> trace();
00143     <font class="keywordtype">void</font> schmidt_orthog(SymmSCMatrix*,<font class="keywordtype">int</font>);
00144     <font class="keywordtype">int</font> schmidt_orthog_tol(SymmSCMatrix*, <font class="keywordtype">double</font> tol, <font class="keywordtype">double</font> *res=0);
00145     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp&gt;&amp;);
00146     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp2&gt;&amp;,
00147                     SCMatrix*);
00148     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp3&gt;&amp;,
00149                     SCMatrix*,SCMatrix*);
00150     <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,
00151                 std::ostream&amp; out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>;
00152 
00153     <font class="comment">// return a pointer to the data for fast access</font>
00154     <font class="keywordtype">double</font> *get_data();
00155     <font class="keywordtype">double</font> **get_rows();
00156     
00157     Ref&lt;SCMatrixSubblockIter&gt; local_blocks(SCMatrixSubblockIter::Access);
00158     Ref&lt;SCMatrixSubblockIter&gt; all_blocks(SCMatrixSubblockIter::Access);
00159 };
00160 
00161 <font class="keyword">class </font>LocalSymmSCMatrix: <font class="keyword">public</font> SymmSCMatrix {
00162     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCMatrix;
00163     <font class="keyword">friend</font> <font class="keyword">class </font>LocalDiagSCMatrix;
00164     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCVector;
00165   <font class="keyword">private</font>:
00166     Ref&lt;SCMatrixLTriBlock&gt; block;
00167     <font class="keywordtype">double</font>** rows;
00168   <font class="keyword">private</font>:
00169     <font class="comment">// utility functions</font>
00170     <font class="keywordtype">int</font> compute_offset(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00171     <font class="keywordtype">void</font> resize(<font class="keywordtype">int</font> n);
00172   <font class="keyword">public</font>:
00173     LocalSymmSCMatrix(<font class="keyword">const</font> RefSCDimension&amp;, LocalSCMatrixKit*);
00174     ~LocalSymmSCMatrix();
00175 
00176     <font class="comment">// implementations and overrides of virtual functions</font>
00177     <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00178     <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00179     <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00180 
00181     SCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00182     SymmSCMatrix * get_subblock(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00183     <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>);
00184     <font class="keywordtype">void</font> assign_subblock(SymmSCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00185     <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>);
00186     <font class="keywordtype">void</font> accumulate_subblock(SymmSCMatrix*, <font class="keywordtype">int</font>,<font class="keywordtype">int</font>);
00187     SCVector * get_row(<font class="keywordtype">int</font> i);
00188     <font class="keywordtype">void</font> assign_row(SCVector *v, <font class="keywordtype">int</font> i);
00189     <font class="keywordtype">void</font> accumulate_row(SCVector *v, <font class="keywordtype">int</font> i);
00190 
00191     <font class="keywordtype">void</font> accumulate_product_rr(SCMatrix*,SCMatrix*);
00192     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> SymmSCMatrix*);
00193     <font class="keywordtype">double</font> invert_this();
00194     <font class="keywordtype">double</font> solve_this(SCVector*);
00195     <font class="keywordtype">double</font> trace();
00196     <font class="keywordtype">double</font> determ_this();
00197     <font class="keywordtype">void</font> gen_invert_this();
00198 
00199     <font class="keywordtype">double</font> scalar_product(SCVector*);
00200     <font class="keywordtype">void</font> diagonalize(DiagSCMatrix*,SCMatrix*);
00201     <font class="keywordtype">void</font> accumulate_symmetric_outer_product(SCVector*);
00202     <font class="keywordtype">void</font> accumulate_symmetric_product(SCMatrix*);
00203     <font class="keywordtype">void</font> accumulate_symmetric_sum(SCMatrix*);
00204     <font class="keywordtype">void</font> accumulate_transform(SCMatrix*,SymmSCMatrix*,
00205                               SCMatrix::Transform = SCMatrix::NormalTransform);
00206     <font class="keywordtype">void</font> accumulate_transform(SCMatrix*,DiagSCMatrix*,
00207                               SCMatrix::Transform = SCMatrix::NormalTransform);
00208     <font class="keywordtype">void</font> accumulate_transform(SymmSCMatrix*,SymmSCMatrix*);
00209     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp&gt;&amp;);
00210     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp2&gt;&amp;,
00211                     SymmSCMatrix*);
00212     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp3&gt;&amp;,
00213                     SymmSCMatrix*,SymmSCMatrix*);
00214     <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,
00215                 std::ostream&amp; out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>;
00216 
00217     <font class="comment">// return a pointer to the data for fast access</font>
00218     <font class="keywordtype">double</font> *get_data();
00219     <font class="keywordtype">double</font> **get_rows();
00220     
00221     Ref&lt;SCMatrixSubblockIter&gt; local_blocks(SCMatrixSubblockIter::Access);
00222     Ref&lt;SCMatrixSubblockIter&gt; all_blocks(SCMatrixSubblockIter::Access);
00223 };
00224 
00225 <font class="keyword">class </font>LocalDiagSCMatrix: <font class="keyword">public</font> DiagSCMatrix {
00226     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCMatrix;
00227     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSymmSCMatrix;
00228     <font class="keyword">friend</font> <font class="keyword">class </font>LocalSCVector;
00229   <font class="keyword">private</font>:
00230     Ref&lt;SCMatrixDiagBlock&gt; block;
00231     <font class="keywordtype">void</font> resize(<font class="keywordtype">int</font> n);
00232   <font class="keyword">public</font>:
00233     LocalDiagSCMatrix(<font class="keyword">const</font> RefSCDimension&amp;, LocalSCMatrixKit*);
00234     ~LocalDiagSCMatrix();
00235 
00236     <font class="comment">// implementations and overrides of virtual functions</font>
00237     <font class="keywordtype">void</font> save_data_state(StateOut&amp;);
00238     <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>;
00239     <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00240     <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>);
00241     <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> DiagSCMatrix*);
00242     <font class="keywordtype">double</font> invert_this();
00243     <font class="keywordtype">double</font> determ_this();
00244     <font class="keywordtype">double</font> trace();
00245     <font class="keywordtype">void</font> gen_invert_this();
00246 
00247     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp&gt;&amp;);
00248     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp2&gt;&amp;,
00249                     DiagSCMatrix*);
00250     <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref&lt;SCElementOp3&gt;&amp;,
00251                     DiagSCMatrix*,DiagSCMatrix*);
00252     <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,
00253                 std::ostream&amp; out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>;
00254 
00255     <font class="comment">// return a pointer to the data for fast access</font>
00256     <font class="keywordtype">double</font> *get_data();
00257 
00258     Ref&lt;SCMatrixSubblockIter&gt; local_blocks(SCMatrixSubblockIter::Access);
00259     Ref&lt;SCMatrixSubblockIter&gt; all_blocks(SCMatrixSubblockIter::Access);
00260 };
00261 
00262 }
00263 
00264 <font class="preprocessor">#endif</font>
00265 <font class="preprocessor"></font>
00266 <font class="comment">// Local Variables:</font>
00267 <font class="comment">// mode: c++</font>
00268 <font class="comment">// c-file-style: "CLJ"</font>
00269 <font class="comment">// End:</font>
</div></pre><hr>
<address>
<small>

Generated at Mon Oct 14 14:16:37 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>