<!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>matrix.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> <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>matrix.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// matrix.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">#ifndef _math_scmat_matrix_h</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#define _math_scmat_matrix_h</font> 00030 <font class="preprocessor"></font><font class="preprocessor">#ifdef __GNUC__</font> 00031 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00032 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00033 <font class="preprocessor"></font> 00034 <font class="preprocessor">#include <iostream></font> 00035 <font class="preprocessor">#include <util/container/array.h></font> 00036 00037 <font class="preprocessor">#include <math/scmat/abstract.h></font> 00038 00039 <font class="keyword">namespace </font>sc { 00040 00041 <font class="keyword">class </font>SCVectordouble; 00042 <font class="keyword">class </font>SCMatrixdouble; 00043 <font class="keyword">class </font>SymmSCMatrixdouble; 00044 <font class="keyword">class </font>DiagSCMatrixdouble; 00045 00046 <font class="keyword">class </font>SCMatrixBlockIter; 00047 <font class="keyword">class </font>SCMatrixRectBlock; 00048 <font class="keyword">class </font>SCMatrixLTriBlock; 00049 <font class="keyword">class </font>SCMatrixDiagBlock; 00050 <font class="keyword">class </font>SCVectorSimpleBlock; 00051 00052 <font class="keyword">class </font>RefSCMatrix; 00053 <font class="keyword">class </font>RefSymmSCMatrix; <a name="l00056"></a><a class="code" href="class_sc__RefSCVector.html">00056</a> <font class="keyword">class </font>RefSCVector: <font class="keyword">public</font> Ref<SCVector> { 00057 <font class="comment">// standard overrides</font> 00058 <font class="keyword">public</font>: 00061 <a class="code" href="class_sc__RefSCVector.html#a0">RefSCVector</a>(); 00063 <a class="code" href="class_sc__RefSCVector.html#a0">RefSCVector</a>(<font class="keyword">const</font> RefSCVector& v); 00065 <a class="code" href="class_sc__RefSCVector.html#a0">RefSCVector</a>(SCVector *v); 00066 <font class="comment">// don't allow automatic conversion from any reference to a</font> 00067 <font class="comment">// described class</font> 00068 ~RefSCVector(); 00070 RefSCVector& <a class="code" href="class_sc__RefSCVector.html#a4">operator=</a>(SCVector* v); 00072 RefSCVector& <a class="code" href="class_sc__RefSCVector.html#a4">operator=</a>(<font class="keyword">const</font> RefSCVector& v); 00073 00074 <font class="comment">// vector specific members</font> 00075 <font class="keyword">public</font>: 00078 <a class="code" href="class_sc__RefSCVector.html#a0">RefSCVector</a>(<font class="keyword">const</font> RefSCDimension& dim,<font class="keyword">const</font> Ref<SCMatrixKit>&); 00079 00081 SCVectordouble <a class="code" href="class_sc__RefSCVector.html#a7">operator()</a>(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00083 SCVectordouble <a class="code" href="class_sc__RefSCVector.html#a8">operator[]</a>(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00085 RefSCVector <a class="code" href="class_sc__RefSCVector.html#a9">operator+</a>(<font class="keyword">const</font> RefSCVector&a) <font class="keyword">const</font>; 00087 RefSCVector <a class="code" href="class_sc__RefSCVector.html#a10">operator-</a>(<font class="keyword">const</font> RefSCVector&a) <font class="keyword">const</font>; 00089 RefSCVector <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00091 RefSCMatrix <a class="code" href="class_sc__RefSCVector.html#a12">outer_product</a>(<font class="keyword">const</font> RefSCVector& v) <font class="keyword">const</font>; 00093 RefSymmSCMatrix <a class="code" href="class_sc__RefSCVector.html#a13">symmetric_outer_product</a>() <font class="keyword">const</font>; 00094 00095 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font> i,<font class="keywordtype">double</font> val) <font class="keyword">const</font>; 00096 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font> i,<font class="keywordtype">double</font> val) <font class="keyword">const</font>; 00097 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00098 <font class="keywordtype">int</font> n() <font class="keyword">const</font>; 00099 RefSCDimension dim() <font class="keyword">const</font>; 00100 Ref<SCMatrixKit> kit() <font class="keyword">const</font>; 00101 RefSCVector clone() <font class="keyword">const</font>; 00102 RefSCVector copy() <font class="keyword">const</font>; 00103 <font class="keywordtype">double</font> maxabs() <font class="keyword">const</font>; 00104 <font class="keywordtype">double</font> scalar_product(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00105 <font class="keywordtype">double</font> dot(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00106 <font class="keywordtype">void</font> normalize() <font class="keyword">const</font>; 00107 <font class="keywordtype">void</font> randomize() <font class="keyword">const</font>; 00108 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> RefSCVector& v) <font class="keyword">const</font>; 00109 <font class="keywordtype">void</font> assign(<font class="keywordtype">double</font> val) <font class="keyword">const</font>; 00110 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>* v) <font class="keyword">const</font>; 00111 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00112 <font class="keywordtype">void</font> scale(<font class="keywordtype">double</font> val) <font class="keyword">const</font>; 00113 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefSCVector& v) <font class="keyword">const</font>; 00114 <font class="keywordtype">void</font> accumulate_product(<font class="keyword">const</font> RefSymmSCMatrix&, <font class="keyword">const</font> RefSCVector&); 00115 <font class="keywordtype">void</font> accumulate_product(<font class="keyword">const</font> RefSCMatrix&, <font class="keyword">const</font> RefSCVector&); 00116 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>& op) <font class="keyword">const</font>; 00117 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00118 <font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00119 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00120 <font class="keyword">const</font> RefSCVector&, 00121 <font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00122 <font class="keywordtype">void</font> print(std::ostream&out) <font class="keyword">const</font>; 00123 <font class="keywordtype">void</font> print(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0, 00124 std::ostream&out=ExEnv::out0(), <font class="keywordtype">int</font> precision=10) <font class="keyword">const</font>; 00125 <font class="keywordtype">void</font> save(StateOut&); 00126 <font class="keywordtype">void</font> restore(StateIn&); 00127 }; 00128 RefSCVector operator*(<font class="keywordtype">double</font>,<font class="keyword">const</font> RefSCVector&); 00129 00130 <font class="keyword">class </font>RefSymmSCMatrix; 00131 <font class="keyword">class </font>RefDiagSCMatrix; <a name="l00135"></a><a class="code" href="class_sc__RefSCMatrix.html">00135</a> <font class="keyword">class </font>RefSCMatrix: <font class="keyword">public</font> Ref<SCMatrix> { 00136 <font class="comment">// standard overrides</font> 00137 <font class="keyword">public</font>: 00140 <a class="code" href="class_sc__RefSCMatrix.html#a0">RefSCMatrix</a>(); 00142 <a class="code" href="class_sc__RefSCMatrix.html#a0">RefSCMatrix</a>(<font class="keyword">const</font> RefSCMatrix& m); 00144 <a class="code" href="class_sc__RefSCMatrix.html#a0">RefSCMatrix</a>(SCMatrix* m); 00145 ~RefSCMatrix(); 00147 RefSCMatrix& <a class="code" href="class_sc__RefSCMatrix.html#a4">operator=</a>(SCMatrix* m); 00149 RefSCMatrix& <a class="code" href="class_sc__RefSCMatrix.html#a4">operator=</a>(<font class="keyword">const</font> RefSCMatrix& m); 00150 00151 <font class="comment">// matrix specific members</font> 00152 <font class="keyword">public</font>: 00155 <a class="code" href="class_sc__RefSCMatrix.html#a0">RefSCMatrix</a>(<font class="keyword">const</font> RefSCDimension& d1,<font class="keyword">const</font> RefSCDimension& d2, 00156 <font class="keyword">const</font> Ref<SCMatrixKit>&); 00157 00159 RefSCVector <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00160 00162 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00163 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00164 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00165 00167 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00168 00170 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a12">operator+</a>(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00172 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a13">operator-</a>(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00173 00175 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a14">t</a>() <font class="keyword">const</font>; 00177 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a15">i</a>() <font class="keyword">const</font>; 00179 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a16">gi</a>() <font class="keyword">const</font>; 00180 00183 RefSCMatrix <a class="code" href="class_sc__RefSCMatrix.html#a17">clone</a>() <font class="keyword">const</font>; 00184 RefSCMatrix copy() <font class="keyword">const</font>; 00185 00186 RefSCMatrix get_subblock(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec); 00187 <font class="keywordtype">void</font> assign_subblock(<font class="keyword">const</font> RefSCMatrix&, <font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec, 00188 <font class="keywordtype">int</font> source_br = 0, <font class="keywordtype">int</font> source_bc = 0); 00189 <font class="keywordtype">void</font> accumulate_subblock(<font class="keyword">const</font> RefSCMatrix&, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, 00190 <font class="keywordtype">int</font> source_br = 0, <font class="keywordtype">int</font> source_bc = 0); 00191 RefSCVector get_row(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00192 RefSCVector get_column(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00193 <font class="keywordtype">void</font> assign_row(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00194 <font class="keywordtype">void</font> assign_column(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00195 <font class="keywordtype">void</font> accumulate_row(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00196 <font class="keywordtype">void</font> accumulate_column(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>) <font class="keyword">const</font>; 00197 00198 <font class="keywordtype">void</font> accumulate_outer_product(<font class="keyword">const</font> RefSCVector&,<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00199 <font class="keywordtype">void</font> accumulate_product(<font class="keyword">const</font> RefSCMatrix&,<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00200 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00201 <font class="keywordtype">void</font> scale(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00202 <font class="keywordtype">void</font> randomize() <font class="keyword">const</font>; 00203 <font class="keywordtype">void</font> assign(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00204 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00205 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00206 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00207 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00208 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00209 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00210 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00211 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&) <font class="keyword">const</font>; 00212 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00213 <font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00214 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00215 <font class="keyword">const</font> RefSCMatrix&, 00216 <font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00217 <font class="keywordtype">int</font> nrow() <font class="keyword">const</font>; 00218 <font class="keywordtype">int</font> ncol() <font class="keyword">const</font>; 00219 RefSCDimension rowdim() <font class="keyword">const</font>; 00220 RefSCDimension coldim() <font class="keyword">const</font>; 00221 Ref<SCMatrixKit> kit() <font class="keyword">const</font>; 00222 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00223 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00224 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00225 <font class="keywordtype">void</font> print(std::ostream&) <font class="keyword">const</font>; 00226 <font class="keywordtype">void</font> print(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0, 00227 std::ostream&out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00228 <font class="keywordtype">double</font> trace() <font class="keyword">const</font>; 00229 <font class="keywordtype">void</font> save(StateOut&); 00230 <font class="keywordtype">void</font> restore(StateIn&); 00231 00236 <font class="keywordtype">void</font> <a class="code" href="class_sc__RefSCMatrix.html#a57">svd</a>(<font class="keyword">const</font> RefSCMatrix &U, 00237 <font class="keyword">const</font> RefDiagSCMatrix &sigma, 00238 <font class="keyword">const</font> RefSCMatrix &V); 00240 <font class="keywordtype">double</font> <a class="code" href="class_sc__RefSCMatrix.html#a58">solve_lin</a>(<font class="keyword">const</font> RefSCVector& v) <font class="keyword">const</font>; 00242 <font class="keywordtype">double</font> <a class="code" href="class_sc__RefSCMatrix.html#a59">determ</a>() <font class="keyword">const</font>; 00244 SCMatrixdouble <a class="code" href="class_sc__RefSCMatrix.html#a60">operator()</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00245 }; 00247 RefSCMatrix operator*(<font class="keywordtype">double</font>,<font class="keyword">const</font> RefSCMatrix&); 00248 <a name="l00251"></a><a class="code" href="class_sc__RefSymmSCMatrix.html">00251</a> <font class="keyword">class </font>RefSymmSCMatrix: <font class="keyword">public</font> Ref<SymmSCMatrix> { 00252 <font class="comment">// standard overrides</font> 00253 <font class="keyword">public</font>: 00256 <a class="code" href="class_sc__RefSymmSCMatrix.html#a0">RefSymmSCMatrix</a>(); 00258 <a class="code" href="class_sc__RefSymmSCMatrix.html#a0">RefSymmSCMatrix</a>(<font class="keyword">const</font> RefSymmSCMatrix& m); 00260 <a class="code" href="class_sc__RefSymmSCMatrix.html#a0">RefSymmSCMatrix</a>(SymmSCMatrix *m); 00261 ~RefSymmSCMatrix(); 00263 RefSymmSCMatrix& <a class="code" href="class_sc__RefSymmSCMatrix.html#a4">operator=</a>(SymmSCMatrix* m); 00265 RefSymmSCMatrix& <a class="code" href="class_sc__RefSymmSCMatrix.html#a4">operator=</a>(<font class="keyword">const</font> RefSymmSCMatrix& m); 00266 00267 <font class="comment">// matrix specific members</font> 00268 <font class="keyword">public</font>: 00271 <a class="code" href="class_sc__RefSymmSCMatrix.html#a0">RefSymmSCMatrix</a>(<font class="keyword">const</font> RefSCDimension& d,<font class="keyword">const</font> Ref<SCMatrixKit>&); 00273 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00274 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00276 RefSCVector <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSCVector&a) <font class="keyword">const</font>; 00277 RefSymmSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00279 RefSymmSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a11">operator+</a>(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00280 RefSymmSCMatrix operator-(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00282 RefSymmSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a13">i</a>() <font class="keyword">const</font>; 00284 RefSymmSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a14">gi</a>() <font class="keyword">const</font>; 00287 RefSymmSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a15">clone</a>() <font class="keyword">const</font>; 00288 RefSymmSCMatrix copy() <font class="keyword">const</font>; 00289 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00290 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00291 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00292 00293 RefSCMatrix get_subblock(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec); 00294 RefSymmSCMatrix get_subblock(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er); 00295 <font class="keywordtype">void</font> assign_subblock(<font class="keyword">const</font> RefSCMatrix&, <font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec); 00296 <font class="keywordtype">void</font> assign_subblock(<font class="keyword">const</font> RefSymmSCMatrix&, <font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er); 00297 <font class="keywordtype">void</font> accumulate_subblock(<font class="keyword">const</font> RefSCMatrix&, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>); 00298 <font class="keywordtype">void</font> accumulate_subblock(<font class="keyword">const</font> RefSymmSCMatrix&, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>); 00299 RefSCVector get_row(<font class="keywordtype">int</font>); 00300 <font class="keywordtype">void</font> assign_row(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>); 00301 <font class="keywordtype">void</font> accumulate_row(<font class="keyword">const</font> RefSCVector&, <font class="keywordtype">int</font>); 00302 00303 <font class="keywordtype">void</font> accumulate_symmetric_outer_product(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00304 <font class="keywordtype">double</font> scalar_product(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00305 <font class="keywordtype">void</font> accumulate_symmetric_product(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00306 <font class="keywordtype">void</font> accumulate_symmetric_sum(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00308 <font class="keywordtype">void</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a33">accumulate_transform</a>(<font class="keyword">const</font> RefSCMatrix&a,<font class="keyword">const</font> RefSymmSCMatrix&b, 00309 SCMatrix::Transform = SCMatrix::NormalTransform) <font class="keyword">const</font>; 00310 <font class="keywordtype">void</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a33">accumulate_transform</a>(<font class="keyword">const</font> RefSCMatrix&a,<font class="keyword">const</font> RefDiagSCMatrix&b, 00311 SCMatrix::Transform = SCMatrix::NormalTransform) <font class="keyword">const</font>; 00312 <font class="keywordtype">void</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a33">accumulate_transform</a>(<font class="keyword">const</font> RefSymmSCMatrix&a, 00313 <font class="keyword">const</font> RefSymmSCMatrix&b) <font class="keyword">const</font>; 00314 00315 <font class="keywordtype">void</font> randomize() <font class="keyword">const</font>; 00316 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00317 <font class="keywordtype">void</font> scale(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00318 <font class="keywordtype">void</font> assign(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00319 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00320 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00321 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00322 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00323 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00324 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&) <font class="keyword">const</font>; 00325 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00326 <font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00327 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00328 <font class="keyword">const</font> RefSymmSCMatrix&, 00329 <font class="keyword">const</font> RefSymmSCMatrix&) <font class="keyword">const</font>; 00330 <font class="keywordtype">double</font> trace() <font class="keyword">const</font>; 00331 <font class="keywordtype">int</font> n() <font class="keyword">const</font>; 00332 RefSCDimension dim() <font class="keyword">const</font>; 00333 Ref<SCMatrixKit> kit() <font class="keyword">const</font>; 00334 <font class="keywordtype">void</font> print(std::ostream&) <font class="keyword">const</font>; 00335 <font class="keywordtype">void</font> print(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0, 00336 std::ostream&out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00337 <font class="keywordtype">void</font> save(StateOut&); 00338 <font class="keywordtype">void</font> restore(StateIn&); 00339 00341 <font class="keywordtype">double</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a56">solve_lin</a>(<font class="keyword">const</font> RefSCVector&) <font class="keyword">const</font>; 00343 <font class="keywordtype">double</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a57">determ</a>() <font class="keyword">const</font>; 00345 RefDiagSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a58">eigvals</a>() <font class="keyword">const</font>; 00347 RefSCMatrix <a class="code" href="class_sc__RefSymmSCMatrix.html#a59">eigvecs</a>() <font class="keyword">const</font>; 00350 <font class="keywordtype">void</font> <a class="code" href="class_sc__RefSymmSCMatrix.html#a60">diagonalize</a>(<font class="keyword">const</font> RefDiagSCMatrix& eigvals, 00351 <font class="keyword">const</font> RefSCMatrix& eigvecs) <font class="keyword">const</font>; 00353 SymmSCMatrixdouble <a class="code" href="class_sc__RefSymmSCMatrix.html#a61">operator()</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">int</font> j) <font class="keyword">const</font>; 00354 }; 00356 RefSymmSCMatrix operator*(<font class="keywordtype">double</font>,<font class="keyword">const</font> RefSymmSCMatrix&); 00357 <a name="l00360"></a><a class="code" href="class_sc__RefDiagSCMatrix.html">00360</a> <font class="keyword">class </font>RefDiagSCMatrix: <font class="keyword">public</font> Ref<DiagSCMatrix> { 00361 <font class="comment">// standard overrides</font> 00362 <font class="keyword">public</font>: 00365 <a class="code" href="class_sc__RefDiagSCMatrix.html#a0">RefDiagSCMatrix</a>(); 00367 <a class="code" href="class_sc__RefDiagSCMatrix.html#a0">RefDiagSCMatrix</a>(<font class="keyword">const</font> RefDiagSCMatrix& m); 00369 <a class="code" href="class_sc__RefDiagSCMatrix.html#a0">RefDiagSCMatrix</a>(DiagSCMatrix *m); 00370 ~RefDiagSCMatrix(); 00372 RefDiagSCMatrix& <a class="code" href="class_sc__RefDiagSCMatrix.html#a4">operator=</a>(DiagSCMatrix* m); 00374 RefDiagSCMatrix& <a class="code" href="class_sc__RefDiagSCMatrix.html#a4">operator=</a>(<font class="keyword">const</font> RefDiagSCMatrix & m); 00375 00376 <font class="comment">// matrix specific members</font> 00377 <font class="keyword">public</font>: 00380 <a class="code" href="class_sc__RefDiagSCMatrix.html#a0">RefDiagSCMatrix</a>(<font class="keyword">const</font> RefSCDimension&,<font class="keyword">const</font> Ref<SCMatrixKit>&); 00382 RefSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keyword">const</font> RefSCMatrix&) <font class="keyword">const</font>; 00383 RefDiagSCMatrix <a class="code" href="class_sc__Ref.html#a9">operator*</a>(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00385 RefDiagSCMatrix <a class="code" href="class_sc__RefDiagSCMatrix.html#a9">operator+</a>(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00386 RefDiagSCMatrix operator-(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00388 RefDiagSCMatrix <a class="code" href="class_sc__RefDiagSCMatrix.html#a11">i</a>() <font class="keyword">const</font>; 00390 RefDiagSCMatrix <a class="code" href="class_sc__RefDiagSCMatrix.html#a12">gi</a>() <font class="keyword">const</font>; 00393 RefDiagSCMatrix <a class="code" href="class_sc__RefDiagSCMatrix.html#a13">clone</a>() <font class="keyword">const</font>; 00394 RefDiagSCMatrix copy() <font class="keyword">const</font>; 00395 <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00396 <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00397 <font class="keywordtype">double</font> get_element(<font class="keywordtype">int</font>) <font class="keyword">const</font>; 00398 <font class="keywordtype">void</font> randomize() <font class="keyword">const</font>; 00399 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00400 <font class="keywordtype">void</font> scale(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00401 <font class="keywordtype">void</font> assign(<font class="keywordtype">double</font>) <font class="keyword">const</font>; 00402 <font class="keywordtype">void</font> assign(<font class="keyword">const</font> <font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00403 <font class="keywordtype">void</font> convert(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00404 <font class="keywordtype">void</font> accumulate(<font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00405 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp>&) <font class="keyword">const</font>; 00406 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp2>&, 00407 <font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00408 <font class="keywordtype">void</font> element_op(<font class="keyword">const</font> Ref<SCElementOp3>&, 00409 <font class="keyword">const</font> RefDiagSCMatrix&, 00410 <font class="keyword">const</font> RefDiagSCMatrix&) <font class="keyword">const</font>; 00411 <font class="keywordtype">int</font> n() <font class="keyword">const</font>; 00412 RefSCDimension dim() <font class="keyword">const</font>; 00413 Ref<SCMatrixKit> kit() <font class="keyword">const</font>; 00414 <font class="keywordtype">double</font> trace() <font class="keyword">const</font>; 00415 <font class="keywordtype">void</font> print(std::ostream&) <font class="keyword">const</font>; 00416 <font class="keywordtype">void</font> print(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0, 00417 std::ostream&out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00418 <font class="keywordtype">void</font> save(StateOut&); 00419 <font class="keywordtype">void</font> restore(StateIn&); 00421 <font class="keywordtype">double</font> <a class="code" href="class_sc__RefDiagSCMatrix.html#a36">determ</a>() <font class="keyword">const</font>; 00423 DiagSCMatrixdouble <a class="code" href="class_sc__RefDiagSCMatrix.html#a37">operator()</a>(<font class="keywordtype">int</font> i) <font class="keyword">const</font>; 00424 }; 00426 RefDiagSCMatrix operator*(<font class="keywordtype">double</font>,<font class="keyword">const</font> RefDiagSCMatrix&); 00427 00428 <font class="keyword">class </font>SCVectordouble { 00429 <font class="keyword">friend</font> <font class="keyword">class </font>RefSCVector; 00430 <font class="keyword">private</font>: 00431 RefSCVector vector; 00432 <font class="keywordtype">int</font> i; 00433 00434 SCVectordouble(SCVector*,<font class="keywordtype">int</font>); 00435 <font class="keyword">public</font>: 00436 SCVectordouble(<font class="keyword">const</font> SCVectordouble&); 00437 ~SCVectordouble(); 00438 <font class="keywordtype">double</font> operator=(<font class="keywordtype">double</font> a); 00439 <font class="keywordtype">double</font> operator=(<font class="keyword">const</font> SCVectordouble&); 00440 operator double(); 00441 <font class="keywordtype">double</font> val() <font class="keyword">const</font>; 00442 }; 00443 00444 <font class="keyword">class </font>SCMatrixdouble { 00445 <font class="keyword">friend</font> <font class="keyword">class </font>RefSCMatrix; 00446 <font class="keyword">private</font>: 00447 RefSCMatrix matrix; 00448 <font class="keywordtype">int</font> i; 00449 <font class="keywordtype">int</font> j; 00450 00451 SCMatrixdouble(SCMatrix*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00452 <font class="keyword">public</font>: 00453 SCMatrixdouble(<font class="keyword">const</font> SCMatrixdouble&); 00454 ~SCMatrixdouble(); 00455 <font class="keywordtype">double</font> operator=(<font class="keywordtype">double</font> a); 00456 <font class="keywordtype">double</font> operator=(<font class="keyword">const</font> SCMatrixdouble&); 00457 operator double(); 00458 <font class="keywordtype">double</font> val() <font class="keyword">const</font>; 00459 }; 00460 00461 <font class="keyword">class </font>SymmSCMatrixdouble { 00462 <font class="keyword">friend</font> <font class="keyword">class </font>RefSymmSCMatrix; 00463 <font class="keyword">private</font>: 00464 RefSymmSCMatrix matrix; 00465 <font class="keywordtype">int</font> i; 00466 <font class="keywordtype">int</font> j; 00467 00468 SymmSCMatrixdouble(SymmSCMatrix*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00469 <font class="keyword">public</font>: 00470 SymmSCMatrixdouble(<font class="keyword">const</font> SCMatrixdouble&); 00471 ~SymmSCMatrixdouble(); 00472 <font class="keywordtype">double</font> operator=(<font class="keywordtype">double</font> a); 00473 <font class="keywordtype">double</font> operator=(<font class="keyword">const</font> SymmSCMatrixdouble&); 00474 operator double(); 00475 <font class="keywordtype">double</font> val() <font class="keyword">const</font>; 00476 }; 00477 00478 <font class="keyword">class </font>DiagSCMatrixdouble { 00479 <font class="keyword">friend</font> <font class="keyword">class </font>RefDiagSCMatrix; 00480 <font class="keyword">private</font>: 00481 RefDiagSCMatrix matrix; 00482 <font class="keywordtype">int</font> i; 00483 <font class="keywordtype">int</font> j; 00484 00485 DiagSCMatrixdouble(DiagSCMatrix*,<font class="keywordtype">int</font>,<font class="keywordtype">int</font>); 00486 <font class="keyword">public</font>: 00487 DiagSCMatrixdouble(<font class="keyword">const</font> SCMatrixdouble&); 00488 ~DiagSCMatrixdouble(); 00489 <font class="keywordtype">double</font> operator=(<font class="keywordtype">double</font> a); 00490 <font class="keywordtype">double</font> operator=(<font class="keyword">const</font> DiagSCMatrixdouble&); 00491 operator double(); 00492 <font class="keywordtype">double</font> val() <font class="keyword">const</font>; 00493 }; 00494 00495 } 00496 00497 <font class="preprocessor">#ifdef INLINE_FUNCTIONS</font> 00498 <font class="preprocessor"></font><font class="preprocessor">#include <math/scmat/matrix_i.h></font> 00499 <font class="preprocessor">#endif</font> 00500 <font class="preprocessor"></font> 00501 <font class="preprocessor">#endif</font> 00502 <font class="preprocessor"></font> 00503 <font class="comment">// Local Variables:</font> 00504 <font class="comment">// mode: c++</font> 00505 <font class="comment">// c-file-style: "CLJ"</font> 00506 <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>