<!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>abstract.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:35 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>abstract.h</h1><div class="fragment"><pre>00001 <font class="comment">//</font> 00002 <font class="comment">// abstract.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_abstract_h</font> 00029 <font class="preprocessor"></font><font class="preprocessor">#define _math_scmat_abstract_h</font> 00030 <font class="preprocessor"></font> 00031 <font class="preprocessor">#ifdef __GNUC__</font> 00032 <font class="preprocessor"></font><font class="preprocessor">#pragma interface</font> 00033 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00034 <font class="preprocessor"></font> 00035 <font class="preprocessor">#include <util/group/message.h></font> 00036 00037 <font class="preprocessor">#include <util/state/state.h></font> 00038 <font class="preprocessor">#include <math/scmat/dim.h></font> 00039 <font class="preprocessor">#include <math/scmat/block.h></font> 00040 <font class="preprocessor">#include <iostream></font> 00041 00042 <font class="keyword">namespace </font>sc { 00043 00044 <font class="keyword">class </font>SCMatrix; 00045 <font class="keyword">class </font>SymmSCMatrix; 00046 <font class="keyword">class </font>DiagSCMatrix; 00047 <font class="keyword">class </font>SCVector; 00048 00049 <font class="keyword">class </font>SCElementOp; 00050 <font class="keyword">class </font>SCElementOp2; 00051 <font class="keyword">class </font>SCElementOp3; 00052 00053 <font class="keyword">class </font>RefSCDimension; 00054 <a name="l00058"></a><a class="code" href="class_sc__SCMatrixKit.html">00058</a> <font class="keyword">class </font>SCMatrixKit: <font class="keyword">public</font> DescribedClass { 00059 <font class="keyword">protected</font>: 00060 Ref<MessageGrp> grp_; 00061 00062 <font class="keyword">public</font>: 00063 SCMatrixKit(); 00064 SCMatrixKit(<font class="keyword">const</font> Ref<KeyVal>&); 00065 ~SCMatrixKit(); 00066 00067 <font class="comment">// these members are default in local.cc</font> 00070 <font class="comment"></font> <font class="keyword">static</font> SCMatrixKit* <a class="code" href="class_sc__SCMatrixKit.html#d0">default_matrixkit</a>(); 00071 <font class="keyword">static</font> <font class="keywordtype">void</font> set_default_matrixkit(<font class="keyword">const</font> Ref<SCMatrixKit> &); 00072 00073 Ref<MessageGrp> messagegrp() <font class="keyword">const</font>; 00074 00076 <font class="keyword">virtual</font> SCMatrix* <a class="code" href="class_sc__SCMatrixKit.html#a4">matrix</a>(<font class="keyword">const</font> RefSCDimension&,<font class="keyword">const</font> RefSCDimension&) = 0; 00077 <font class="keyword">virtual</font> SymmSCMatrix* symmmatrix(<font class="keyword">const</font> RefSCDimension&) = 0; 00078 <font class="keyword">virtual</font> DiagSCMatrix* diagmatrix(<font class="keyword">const</font> RefSCDimension&) = 0; 00079 <font class="keyword">virtual</font> SCVector* vector(<font class="keyword">const</font> RefSCDimension&) = 0; 00080 00083 SCMatrix* <a class="code" href="class_sc__SCMatrixKit.html#a8">restore_matrix</a>(StateIn&, 00084 <font class="keyword">const</font> RefSCDimension&, 00085 <font class="keyword">const</font> RefSCDimension&); 00086 SymmSCMatrix* restore_symmmatrix(StateIn&, 00087 <font class="keyword">const</font> RefSCDimension&); 00088 DiagSCMatrix* restore_diagmatrix(StateIn&, 00089 <font class="keyword">const</font> RefSCDimension&); 00090 SCVector* restore_vector(StateIn&, 00091 <font class="keyword">const</font> RefSCDimension&); 00092 }; 00093 00094 <a name="l00097"></a><a class="code" href="class_sc__SCVector.html">00097</a> <font class="keyword">class </font>SCVector: <font class="keyword">public</font> DescribedClass { 00098 <font class="keyword">protected</font>: 00099 RefSCDimension d; 00100 Ref<SCMatrixKit> kit_; 00101 <font class="keyword">public</font>: 00102 SCVector(<font class="keyword">const</font> RefSCDimension&, SCMatrixKit *); 00103 00105 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a1">save</a>(StateOut&); 00106 <font class="keyword">virtual</font> <font class="keywordtype">void</font> restore(StateIn&); 00107 <a name="l00109"></a><a class="code" href="class_sc__SCVector.html#a3">00109</a> Ref<SCMatrixKit> <a class="code" href="class_sc__SCVector.html#a3">kit</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> kit_; } 00110 00111 <font class="comment">// concrete functions (some can be overridden)</font> 00113 <font class="comment"> virtual SCVector* copy();</font> 00115 <font class="comment"> virtual SCVector* clone();</font> 00116 00117 <font class="keyword">virtual</font> ~SCVector(); <a name="l00119"></a><a class="code" href="class_sc__SCVector.html#a7">00119</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__SCVector.html#a7">n</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d->n(); } 00121 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCVector.html#a8">maxabs</a>() <font class="keyword">const</font>; 00123 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a9">normalize</a>(); 00125 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a10">randomize</a>(); <a name="l00127"></a><a class="code" href="class_sc__SCVector.html#a11">00127</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a11">assign</a>(<font class="keywordtype">double</font> val)<font class="keyword"> </font>{ <a class="code" href="class_sc__SCVector.html#a14">assign_val</a>(val); } <a name="l00129"></a><a class="code" href="class_sc__SCVector.html#a12">00129</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a11">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>* v)<font class="keyword"> </font>{ assign_p(v); } <a name="l00132"></a><a class="code" href="class_sc__SCVector.html#a13">00132</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a11">assign</a>(SCVector* v)<font class="keyword"> </font>{ assign_v(v); } 00134 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a14">assign_val</a>(<font class="keywordtype">double</font> val); 00135 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>* v); 00136 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_v(SCVector *v); 00138 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a17">convert</a>(<font class="keywordtype">double</font>* v) <font class="keyword">const</font>; 00141 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a17">convert</a>(SCVector*); 00142 <font class="keyword">virtual</font> <font class="keywordtype">void</font> convert_accumulate(SCVector*); 00144 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a20">scale</a>(<font class="keywordtype">double</font> val); 00145 <a name="l00147"></a><a class="code" href="class_sc__SCVector.html#a21">00147</a> RefSCDimension <a class="code" href="class_sc__SCVector.html#a21">dim</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d; } 00149 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a22">set_element</a>(<font class="keywordtype">int</font> i,<font class="keywordtype">double</font> val) = 0; 00151 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a23">accumulate_element</a>(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00153 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCVector.html#a24">get_element</a>(<font class="keywordtype">int</font> i) <font class="keyword">const</font> = 0; <a name="l00155"></a><a class="code" href="class_sc__SCVector.html#a25">00155</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a25">accumulate_product</a>(SymmSCMatrix* m, SCVector* v)<font class="keyword"></font> 00156 <font class="keyword"> </font>{ accumulate_product_sv(m,v); } 00157 <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a25">accumulate_product</a>(SCMatrix* m, SCVector* v)<font class="keyword"></font> 00158 <font class="keyword"> </font>{ accumulate_product_rv(m,v); } 00159 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_sv(SymmSCMatrix* m, SCVector* v); 00160 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_rv(SCMatrix* m, SCVector* v) = 0; 00162 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a29">accumulate</a>(<font class="keyword">const</font> SCVector*v) = 0; 00164 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a29">accumulate</a>(<font class="keyword">const</font> SCMatrix*m) = 0; 00166 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCVector.html#a31">scalar_product</a>(SCVector*) = 0; 00168 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a32">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp>&) = 0; 00169 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a32">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp2>&, 00170 SCVector*) = 0; 00171 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a32">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp3>&, 00172 SCVector*,SCVector*) = 0; 00174 <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a35">print</a>(std::ostream&o=ExEnv::out0()) <font class="keyword">const</font>; 00175 <font class="keywordtype">void</font> <a class="code" href="class_sc__SCVector.html#a35">print</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,std::ostream&out=ExEnv::out0(),<font class="keywordtype">int</font>=10) <font class="keyword">const</font>; 00176 <font class="keyword">virtual</font> <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0,std::ostream&out=ExEnv::out0(), 00177 <font class="keywordtype">int</font>=10) <font class="keyword">const</font> = 0; 00178 00180 Ref<MessageGrp> <a class="code" href="class_sc__SCVector.html#a38">messagegrp</a>() <font class="keyword">const</font>; 00181 00186 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SCVector.html#a39">local_blocks</a>( 00187 SCMatrixSubblockIter::Access) = 0; 00189 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SCVector.html#a40">all_blocks</a>(SCMatrixSubblockIter::Access) = 0; 00190 }; 00191 <a name="l00195"></a><a class="code" href="class_sc__SCMatrix.html">00195</a> <font class="keyword">class </font>SCMatrix: <font class="keyword">public</font> DescribedClass { 00196 <font class="keyword">protected</font>: 00197 RefSCDimension d1,d2; 00198 Ref<SCMatrixKit> kit_; 00199 <font class="keyword">public</font>: 00200 <font class="comment">// used to control transformations</font> 00201 <font class="keyword">enum</font> Transform { NormalTransform = 0, TransposeTransform = 1 }; 00202 00203 <font class="comment">// concrete functions (some can be overridden)</font> 00204 SCMatrix(<font class="keyword">const</font> RefSCDimension&, <font class="keyword">const</font> RefSCDimension&, SCMatrixKit *); 00205 <font class="keyword">virtual</font> ~SCMatrix(); 00206 00208 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a2">save</a>(StateOut&); 00209 <font class="keyword">virtual</font> <font class="keywordtype">void</font> restore(StateIn&); 00210 <a name="l00212"></a><a class="code" href="class_sc__SCMatrix.html#a4">00212</a> Ref<SCMatrixKit> <a class="code" href="class_sc__SCMatrix.html#a4">kit</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> kit_; } 00213 <a name="l00215"></a><a class="code" href="class_sc__SCMatrix.html#a5">00215</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__SCMatrix.html#a5">nrow</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d1->n(); } <a name="l00217"></a><a class="code" href="class_sc__SCMatrix.html#a6">00217</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__SCMatrix.html#a6">ncol</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d2->n(); } 00219 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCMatrix.html#a7">maxabs</a>() <font class="keyword">const</font>; 00221 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a8">randomize</a>(); <a name="l00223"></a><a class="code" href="class_sc__SCMatrix.html#a9">00223</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a9">assign</a>(<font class="keywordtype">double</font> val)<font class="keyword"> </font>{ <a class="code" href="class_sc__SCMatrix.html#a13">assign_val</a>(val); } <a name="l00225"></a><a class="code" href="class_sc__SCMatrix.html#a10">00225</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a9">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>* m)<font class="keyword"> </font>{ assign_p(m); } <a name="l00227"></a><a class="code" href="class_sc__SCMatrix.html#a11">00227</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a9">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>** m)<font class="keyword"> </font>{ assign_pp(m); } <a name="l00229"></a><a class="code" href="class_sc__SCMatrix.html#a12">00229</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a9">assign</a>(SCMatrix* m)<font class="keyword"> </font>{ assign_r(m); } 00231 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a13">assign_val</a>(<font class="keywordtype">double</font> val); 00232 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>* m); 00233 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_pp(<font class="keyword">const</font> <font class="keywordtype">double</font>** m); 00234 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_r(SCMatrix* m); 00237 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a17">convert</a>(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00238 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a17">convert</a>(<font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00241 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a17">convert</a>(SCMatrix*); 00242 <font class="keyword">virtual</font> <font class="keywordtype">void</font> convert_accumulate(SCMatrix*); 00244 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a21">scale</a>(<font class="keywordtype">double</font> val); 00246 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a22">scale_diagonal</a>(<font class="keywordtype">double</font> val); 00248 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a23">shift_diagonal</a>(<font class="keywordtype">double</font> val); 00250 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a24">unit</a>(); 00252 <font class="keyword">virtual</font> SCMatrix* <a class="code" href="class_sc__SCMatrix.html#a25">copy</a>(); 00254 <font class="keyword">virtual</font> SCMatrix* <a class="code" href="class_sc__SCMatrix.html#a26">clone</a>(); 00255 00256 <font class="comment">// pure virtual functions</font> <a name="l00258"></a><a class="code" href="class_sc__SCMatrix.html#a27">00258</a> <font class="comment"> RefSCDimension rowdim() const { return d1; }</font> 00259 RefSCDimension coldim()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d2; } 00261 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCMatrix.html#a29">get_element</a>(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>) <font class="keyword">const</font> = 0; 00262 <font class="keyword">virtual</font> <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00263 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00264 00268 <font class="keyword">virtual</font> SCMatrix * <a class="code" href="class_sc__SCMatrix.html#a32">get_subblock</a>(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec) =0; 00269 00271 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a33">assign_subblock</a>(SCMatrix *m, <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) =0; 00272 00274 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a34">accumulate_subblock</a>(SCMatrix *m, <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) =0; 00275 00277 <font class="keyword">virtual</font> SCVector * <a class="code" href="class_sc__SCMatrix.html#a35">get_row</a>(<font class="keywordtype">int</font> i) =0; 00278 <font class="keyword">virtual</font> SCVector * get_column(<font class="keywordtype">int</font> i) =0; 00279 00281 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a37">assign_row</a>(SCVector *v, <font class="keywordtype">int</font> i) =0; 00282 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_column(SCVector *v, <font class="keywordtype">int</font> i) =0; 00283 00285 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a39">accumulate_row</a>(SCVector *v, <font class="keywordtype">int</font> i) =0; 00286 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_column(SCVector *v, <font class="keywordtype">int</font> i) =0; 00287 00289 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a41">accumulate</a>(<font class="keyword">const</font> SCMatrix* m) = 0; 00290 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a41">accumulate</a>(<font class="keyword">const</font> SymmSCMatrix* m) = 0; 00291 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a41">accumulate</a>(<font class="keyword">const</font> DiagSCMatrix* m) = 0; 00292 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a41">accumulate</a>(<font class="keyword">const</font> SCVector*) = 0; 00294 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a45">accumulate_outer_product</a>(SCVector*,SCVector*) = 0; 00295 <font class="keywordtype">void</font> accumulate_product(SCMatrix*m1,SCMatrix*m2)<font class="keyword"></font> 00296 <font class="keyword"> </font>{ accumulate_product_rr(m1,m2); } 00297 <font class="keywordtype">void</font> accumulate_product(SCMatrix*m1,SymmSCMatrix*m2)<font class="keyword"></font> 00298 <font class="keyword"> </font>{ accumulate_product_rs(m1,m2); } 00299 <font class="keywordtype">void</font> accumulate_product(SCMatrix*m1,DiagSCMatrix*m2)<font class="keyword"></font> 00300 <font class="keyword"> </font>{ accumulate_product_rd(m1,m2); } 00301 <font class="keywordtype">void</font> accumulate_product(SymmSCMatrix*m1,SCMatrix*m2)<font class="keyword"></font> 00302 <font class="keyword"> </font>{ accumulate_product_sr(m1,m2); } 00303 <font class="keywordtype">void</font> accumulate_product(DiagSCMatrix*m1,SCMatrix*m2)<font class="keyword"></font> 00304 <font class="keyword"> </font>{ accumulate_product_dr(m1,m2); } 00305 <font class="keywordtype">void</font> accumulate_product(SymmSCMatrix*m1,SymmSCMatrix*m2)<font class="keyword"></font> 00306 <font class="keyword"> </font>{ accumulate_product_ss(m1,m2); } 00307 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_rr(SCMatrix*,SCMatrix*) = 0; 00308 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_rs(SCMatrix*,SymmSCMatrix*); 00309 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_rd(SCMatrix*,DiagSCMatrix*); 00310 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_sr(SymmSCMatrix*,SCMatrix*); 00311 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_dr(DiagSCMatrix*,SCMatrix*); 00312 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_product_ss(SymmSCMatrix*,SymmSCMatrix*); 00314 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a58">transpose_this</a>() = 0; 00316 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCMatrix.html#a59">trace</a>() =0; 00318 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCMatrix.html#a60">invert_this</a>() = 0; 00320 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SCMatrix.html#a61">determ_this</a>() = 0; 00321 00324 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a62">svd_this</a>(SCMatrix *U, DiagSCMatrix *sigma, SCMatrix *V); 00325 <font class="keyword">virtual</font> <font class="keywordtype">double</font> solve_this(SCVector*) = 0; 00326 <font class="keyword">virtual</font> <font class="keywordtype">void</font> gen_invert_this(); 00327 00330 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a65">schmidt_orthog</a>(SymmSCMatrix*, <font class="keywordtype">int</font> n) =0; 00331 00335 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_sc__SCMatrix.html#a66">schmidt_orthog_tol</a>(SymmSCMatrix*, <font class="keywordtype">double</font> tol, <font class="keywordtype">double</font>*res=0)=0; 00336 00338 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a67">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp>&) = 0; 00339 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a67">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp2>&, 00340 SCMatrix*) = 0; 00341 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a67">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp3>&, 00342 SCMatrix*,SCMatrix*) = 0; 00344 <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a70">print</a>(std::ostream&o=ExEnv::out0()) <font class="keyword">const</font>; 00345 <font class="keywordtype">void</font> <a class="code" href="class_sc__SCMatrix.html#a70">print</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,std::ostream& out=ExEnv::out0(), 00346 <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00347 <font class="keyword">virtual</font> <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>*title=0, 00348 std::ostream&out=ExEnv::out0(),<font class="keywordtype">int</font> =10) <font class="keyword">const</font> = 0; 00349 00351 Ref<MessageGrp> <a class="code" href="class_sc__SCMatrix.html#a73">messagegrp</a>() <font class="keyword">const</font>; 00352 00355 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SCMatrix.html#a74">local_blocks</a>( 00356 SCMatrixSubblockIter::Access) = 0; 00358 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SCMatrix.html#a75">all_blocks</a>( 00359 SCMatrixSubblockIter::Access) = 0; 00360 }; 00361 <a name="l00364"></a><a class="code" href="class_sc__SymmSCMatrix.html">00364</a> <font class="keyword">class </font>SymmSCMatrix: <font class="keyword">public</font> DescribedClass { 00365 <font class="keyword">protected</font>: 00366 RefSCDimension d; 00367 Ref<SCMatrixKit> kit_; 00368 <font class="keyword">public</font>: 00369 SymmSCMatrix(<font class="keyword">const</font> RefSCDimension&, SCMatrixKit *); 00370 <a name="l00372"></a><a class="code" href="class_sc__SymmSCMatrix.html#a1">00372</a> Ref<SCMatrixKit> <a class="code" href="class_sc__SymmSCMatrix.html#a1">kit</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> kit_; } 00373 00375 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a2">save</a>(StateOut&); 00376 <font class="keyword">virtual</font> <font class="keywordtype">void</font> restore(StateIn&); 00378 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmSCMatrix.html#a4">maxabs</a>() <font class="keyword">const</font>; 00380 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a5">randomize</a>(); <a name="l00382"></a><a class="code" href="class_sc__SymmSCMatrix.html#a6">00382</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a6">assign</a>(<font class="keywordtype">double</font> val)<font class="keyword"> </font>{ <a class="code" href="class_sc__SymmSCMatrix.html#a10">assign_val</a>(val); } <a name="l00384"></a><a class="code" href="class_sc__SymmSCMatrix.html#a7">00384</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a6">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>* m)<font class="keyword"> </font>{ assign_p(m); } <a name="l00386"></a><a class="code" href="class_sc__SymmSCMatrix.html#a8">00386</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a6">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>** m)<font class="keyword"> </font>{ assign_pp(m); } <a name="l00389"></a><a class="code" href="class_sc__SymmSCMatrix.html#a9">00389</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a6">assign</a>(SymmSCMatrix* m)<font class="keyword"> </font>{ assign_s(m); } 00391 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a10">assign_val</a>(<font class="keywordtype">double</font> val); 00392 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>* m); 00393 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_pp(<font class="keyword">const</font> <font class="keywordtype">double</font>** m); 00394 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_s(SymmSCMatrix* m); 00396 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a14">convert</a>(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00397 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a14">convert</a>(<font class="keywordtype">double</font>**) <font class="keyword">const</font>; 00400 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a14">convert</a>(SymmSCMatrix*); 00401 <font class="keyword">virtual</font> <font class="keywordtype">void</font> convert_accumulate(SymmSCMatrix*); 00403 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a18">scale</a>(<font class="keywordtype">double</font>); 00405 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a19">scale_diagonal</a>(<font class="keywordtype">double</font>); 00407 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a20">shift_diagonal</a>(<font class="keywordtype">double</font>); 00409 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a21">unit</a>(); <a name="l00411"></a><a class="code" href="class_sc__SymmSCMatrix.html#a22">00411</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__SymmSCMatrix.html#a22">n</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d->n(); } 00413 <font class="keyword">virtual</font> SymmSCMatrix* <a class="code" href="class_sc__SymmSCMatrix.html#a23">copy</a>(); 00415 <font class="keyword">virtual</font> SymmSCMatrix* <a class="code" href="class_sc__SymmSCMatrix.html#a24">clone</a>(); 00416 00417 <font class="comment">// pure virtual functions</font> <a name="l00419"></a><a class="code" href="class_sc__SymmSCMatrix.html#a25">00419</a> <font class="comment"> RefSCDimension dim() const { return d; }</font> 00421 <font class="comment"> virtual double get_element(int,int) const = 0;</font> 00422 <font class="keyword">virtual</font> <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00423 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00424 00428 <font class="keyword">virtual</font> SCMatrix * <a class="code" href="class_sc__SymmSCMatrix.html#a29">get_subblock</a>(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er, <font class="keywordtype">int</font> bc, <font class="keywordtype">int</font> ec) =0; 00429 <font class="keyword">virtual</font> SymmSCMatrix * <a class="code" href="class_sc__SymmSCMatrix.html#a29">get_subblock</a>(<font class="keywordtype">int</font> br, <font class="keywordtype">int</font> er) =0; 00430 00432 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a31">assign_subblock</a>(SCMatrix *m, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>) =0; 00433 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a31">assign_subblock</a>(SymmSCMatrix *m, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>) =0; 00434 00436 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a33">accumulate_subblock</a>(SCMatrix *m, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>) =0; 00437 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a33">accumulate_subblock</a>(SymmSCMatrix *m, <font class="keywordtype">int</font>, <font class="keywordtype">int</font>) =0; 00438 00440 <font class="keyword">virtual</font> SCVector * <a class="code" href="class_sc__SymmSCMatrix.html#a35">get_row</a>(<font class="keywordtype">int</font> i) =0; 00441 00443 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a36">assign_row</a>(SCVector *v, <font class="keywordtype">int</font> i) =0; 00444 00446 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a37">accumulate_row</a>(SCVector *v, <font class="keywordtype">int</font> i) =0; 00447 00450 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a38">diagonalize</a>(DiagSCMatrix*d,SCMatrix*m) = 0; 00452 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a39">accumulate</a>(<font class="keyword">const</font> SymmSCMatrix* m) = 0; 00454 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a40">accumulate_symmetric_sum</a>(SCMatrix*) = 0; 00455 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_symmetric_product(SCMatrix*); 00456 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_transform(SCMatrix*,SymmSCMatrix*, 00457 SCMatrix::Transform = SCMatrix::NormalTransform); 00458 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_transform(SCMatrix*,DiagSCMatrix*, 00459 SCMatrix::Transform = SCMatrix::NormalTransform); 00460 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_transform(SymmSCMatrix*,SymmSCMatrix*); 00461 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_symmetric_outer_product(SCVector*); 00464 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmSCMatrix.html#a46">scalar_product</a>(SCVector* v); 00466 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmSCMatrix.html#a47">trace</a>() = 0; 00468 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmSCMatrix.html#a48">invert_this</a>() = 0; 00470 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__SymmSCMatrix.html#a49">determ_this</a>() = 0; 00471 00472 <font class="keyword">virtual</font> <font class="keywordtype">double</font> solve_this(SCVector*) = 0; 00473 <font class="keyword">virtual</font> <font class="keywordtype">void</font> gen_invert_this() = 0; 00474 00476 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a52">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp>&) = 0; 00477 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a52">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp2>&, 00478 SymmSCMatrix*) = 0; 00479 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a52">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp3>&, 00480 SymmSCMatrix*,SymmSCMatrix*) = 0; 00482 <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a55">print</a>(std::ostream&o=ExEnv::out0()) <font class="keyword">const</font>; 00483 <font class="keywordtype">void</font> <a class="code" href="class_sc__SymmSCMatrix.html#a55">print</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0,std::ostream& out=ExEnv::out0(), 00484 <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00485 <font class="keyword">virtual</font> <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00486 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00487 00489 Ref<MessageGrp> <a class="code" href="class_sc__SymmSCMatrix.html#a58">messagegrp</a>() <font class="keyword">const</font>; 00490 00493 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SymmSCMatrix.html#a59">local_blocks</a>( 00494 SCMatrixSubblockIter::Access) = 0; 00496 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__SymmSCMatrix.html#a60">all_blocks</a>( 00497 SCMatrixSubblockIter::Access) = 0; 00498 }; 00499 <a name="l00502"></a><a class="code" href="class_sc__DiagSCMatrix.html">00502</a> <font class="keyword">class </font>DiagSCMatrix: <font class="keyword">public</font> DescribedClass { 00503 <font class="keyword">protected</font>: 00504 RefSCDimension d; 00505 Ref<SCMatrixKit> kit_; 00506 <font class="keyword">public</font>: 00507 DiagSCMatrix(<font class="keyword">const</font> RefSCDimension&, SCMatrixKit *); 00508 <a name="l00510"></a><a class="code" href="class_sc__DiagSCMatrix.html#a1">00510</a> Ref<SCMatrixKit> <a class="code" href="class_sc__DiagSCMatrix.html#a1">kit</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> kit_; } 00511 00513 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a2">save</a>(StateOut&); 00514 <font class="keyword">virtual</font> <font class="keywordtype">void</font> restore(StateIn&); 00515 00517 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__DiagSCMatrix.html#a4">maxabs</a>() <font class="keyword">const</font>; 00519 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a5">randomize</a>(); <a name="l00521"></a><a class="code" href="class_sc__DiagSCMatrix.html#a6">00521</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a6">assign</a>(<font class="keywordtype">double</font> val)<font class="keyword"> </font>{ <a class="code" href="class_sc__DiagSCMatrix.html#a9">assign_val</a>(val); } <a name="l00523"></a><a class="code" href="class_sc__DiagSCMatrix.html#a7">00523</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a6">assign</a>(<font class="keyword">const</font> <font class="keywordtype">double</font>*p)<font class="keyword"> </font>{ assign_p(p); } <a name="l00526"></a><a class="code" href="class_sc__DiagSCMatrix.html#a8">00526</a> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a6">assign</a>(DiagSCMatrix*d_a)<font class="keyword"> </font>{ assign_d(d_a); } 00528 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a9">assign_val</a>(<font class="keywordtype">double</font> val); 00529 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_p(<font class="keyword">const</font> <font class="keywordtype">double</font>*); 00530 <font class="keyword">virtual</font> <font class="keywordtype">void</font> assign_d(DiagSCMatrix*); 00532 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a12">convert</a>(<font class="keywordtype">double</font>*) <font class="keyword">const</font>; 00535 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a12">convert</a>(DiagSCMatrix*); 00536 <font class="keyword">virtual</font> <font class="keywordtype">void</font> convert_accumulate(DiagSCMatrix*); 00538 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a15">scale</a>(<font class="keywordtype">double</font>); <a name="l00540"></a><a class="code" href="class_sc__DiagSCMatrix.html#a16">00540</a> <font class="keywordtype">int</font> <a class="code" href="class_sc__DiagSCMatrix.html#a16">n</a>()<font class="keyword"> const </font>{ <font class="keywordflow">return</font> d->n(); } 00542 <font class="keyword">virtual</font> DiagSCMatrix* <a class="code" href="class_sc__DiagSCMatrix.html#a17">copy</a>(); 00544 <font class="keyword">virtual</font> DiagSCMatrix* <a class="code" href="class_sc__DiagSCMatrix.html#a18">clone</a>(); 00545 00546 <font class="comment">// pure virtual functions</font> <a name="l00548"></a><a class="code" href="class_sc__DiagSCMatrix.html#a19">00548</a> <font class="comment"> RefSCDimension dim() const { return d; }</font> 00550 <font class="comment"> virtual double get_element(int) const = 0;</font> 00551 <font class="keyword">virtual</font> <font class="keywordtype">void</font> set_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00552 <font class="keyword">virtual</font> <font class="keywordtype">void</font> accumulate_element(<font class="keywordtype">int</font>,<font class="keywordtype">double</font>) = 0; 00554 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a23">accumulate</a>(<font class="keyword">const</font> DiagSCMatrix* m) = 0; 00556 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__DiagSCMatrix.html#a24">trace</a>() = 0; 00558 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__DiagSCMatrix.html#a25">determ_this</a>() = 0; 00560 <font class="keyword">virtual</font> <font class="keywordtype">double</font> <a class="code" href="class_sc__DiagSCMatrix.html#a26">invert_this</a>() = 0; 00562 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a27">gen_invert_this</a>() = 0; 00564 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a28">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp>&) = 0; 00565 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a28">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp2>&, 00566 DiagSCMatrix*) = 0; 00567 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a28">element_op</a>(<font class="keyword">const</font> Ref<SCElementOp3>&, 00568 DiagSCMatrix*,DiagSCMatrix*) = 0; 00570 <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a31">print</a>(std::ostream&o=ExEnv::out0()) <font class="keyword">const</font>; 00571 <font class="keywordtype">void</font> <a class="code" href="class_sc__DiagSCMatrix.html#a31">print</a>(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00572 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00573 <font class="keyword">virtual</font> <font class="keywordtype">void</font> vprint(<font class="keyword">const</font> <font class="keywordtype">char</font>* title=0, 00574 std::ostream& out=ExEnv::out0(), <font class="keywordtype">int</font> =10) <font class="keyword">const</font>; 00575 00577 Ref<MessageGrp> <a class="code" href="class_sc__DiagSCMatrix.html#a34">messagegrp</a>() <font class="keyword">const</font>; 00578 00581 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__DiagSCMatrix.html#a35">local_blocks</a>( 00582 SCMatrixSubblockIter::Access) = 0; 00584 <font class="keyword">virtual</font> Ref<SCMatrixSubblockIter> <a class="code" href="class_sc__DiagSCMatrix.html#a36">all_blocks</a>( 00585 SCMatrixSubblockIter::Access) = 0; 00586 }; 00587 00588 } 00589 00590 <font class="preprocessor">#endif</font> 00591 <font class="preprocessor"></font> 00592 <font class="comment">// Local Variables:</font> 00593 <font class="comment">// mode: c++</font> 00594 <font class="comment">// c-file-style: "CLJ"</font> 00595 <font class="comment">// End:</font> </div></pre><hr> <address> <small> Generated at Mon Oct 14 14:16:35 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>