2
0
mirror of https://github.com/boostorg/ublas.git synced 2026-02-22 15:52:18 +00:00
Files
ublas/doc/doxyfiles/html/a00598_source.html
David Bellot 11b1711474 new doxyfiles
[SVN r75573]
2011-11-20 14:50:03 +00:00

358 lines
33 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Boost.uBlas: blas.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.7.3 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<script type="text/javascript">
function hasClass(ele,cls) {
return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
if (hasClass(ele,cls)) {
var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
ele.className=ele.className.replace(reg,' ');
}
}
function toggleVisibility(linkObj) {
var base = linkObj.getAttribute('id');
var summary = document.getElementById(base + '-summary');
var content = document.getElementById(base + '-content');
var trigger = document.getElementById(base + '-trigger');
if ( hasClass(linkObj,'closed') ) {
summary.style.display = 'none';
content.style.display = 'block';
trigger.src = 'open.png';
removeClass(linkObj,'closed');
addClass(linkObj,'opened');
} else if ( hasClass(linkObj,'opened') ) {
summary.style.display = 'block';
content.style.display = 'none';
trigger.src = 'closed.png';
removeClass(linkObj,'opened');
addClass(linkObj,'closed');
}
return false;
}
</script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="logo boost ublas.png"></td>
<td style="padding-left: 0.5em;">
<div id="projectname">Boost.uBlas&#160;<span id="projectnumber">1.49</span></div>
<div id="projectbrief">Linear Algebra in C++: matrices, vectors and numeric algorithms</div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li id="searchli">
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</span>
</div>
</li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
<li><a href="globals.html"><span>File&#160;Members</span></a></li>
</ul>
</div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
initNavTree('a00598.html','');
</script>
<div id="doc-content">
<div class="header">
<div class="headertitle">
<h1>blas.hpp</h1> </div>
</div>
<div class="contents">
<a href="a00598.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot</span>
<a name="l00002"></a>00002 <span class="comment">//</span>
<a name="l00003"></a>00003 <span class="comment">// Distributed under the Boost Software License, Version 1.0. (See</span>
<a name="l00004"></a>00004 <span class="comment">// accompanying file LICENSE_1_0.txt or copy at</span>
<a name="l00005"></a>00005 <span class="comment">// http://www.boost.org/LICENSE_1_0.txt)</span>
<a name="l00006"></a>00006 <span class="comment">//</span>
<a name="l00007"></a>00007 <span class="comment">// The authors gratefully acknowledge the support of</span>
<a name="l00008"></a>00008 <span class="comment">// GeNeSys mbH &amp; Co. KG in producing this work.</span>
<a name="l00009"></a>00009
<a name="l00010"></a>00010 <span class="preprocessor">#ifndef _BOOST_UBLAS_BLAS_</span>
<a name="l00011"></a>00011 <span class="preprocessor"></span><span class="preprocessor">#define _BOOST_UBLAS_BLAS_</span>
<a name="l00012"></a>00012 <span class="preprocessor"></span>
<a name="l00013"></a>00013 <span class="preprocessor">#include &lt;boost/numeric/ublas/traits.hpp&gt;</span>
<a name="l00014"></a>00014
<a name="l00015"></a>00015 <span class="keyword">namespace </span>boost { <span class="keyword">namespace </span>numeric { <span class="keyword">namespace </span>ublas {
<a name="l00016"></a>00016
<a name="l00017"></a>00017
<a name="l00023"></a><a class="code" href="a00651.html">00023</a> <span class="keyword">namespace </span>blas_1 {
<a name="l00024"></a>00024
<a name="l00032"></a>00032 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00033"></a>00033 <span class="keyword">typename</span> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">type_traits&lt;typename V::value_type&gt;::real_type</a>
<a name="l00034"></a><a class="code" href="a00651.html#ad7e35b223f5cac9878a04db6a6df6715">00034</a> <a class="code" href="a00651.html#ad7e35b223f5cac9878a04db6a6df6715">asum</a> (<span class="keyword">const</span> V &amp;v) {
<a name="l00035"></a>00035 <span class="keywordflow">return</span> <a class="code" href="a00595.html#a98dc7e95f16a0a34d4df93d630005d50">norm_1</a> (v);
<a name="l00036"></a>00036 }
<a name="l00037"></a>00037
<a name="l00045"></a>00045 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00046"></a>00046 <span class="keyword">typename</span> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">type_traits&lt;typename V::value_type&gt;::real_type</a>
<a name="l00047"></a><a class="code" href="a00651.html#ae7d8e65daedd8de344f4d169cfe22dc9">00047</a> <a class="code" href="a00651.html#ae7d8e65daedd8de344f4d169cfe22dc9">nrm2</a> (<span class="keyword">const</span> V &amp;v) {
<a name="l00048"></a>00048 <span class="keywordflow">return</span> <a class="code" href="a00595.html#a347225592df1cce706f0b365e82894fb">norm_2</a> (v);
<a name="l00049"></a>00049 }
<a name="l00050"></a>00050
<a name="l00058"></a>00058 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V&gt;
<a name="l00059"></a>00059 <span class="keyword">typename</span> <a class="code" href="a00465.html#a8212d3d2deb6273ae2006409c81ef720">type_traits&lt;typename V::value_type&gt;::real_type</a>
<a name="l00060"></a><a class="code" href="a00651.html#a576c07d6b09c0b951eb5c8830de4b93a">00060</a> <a class="code" href="a00651.html#a576c07d6b09c0b951eb5c8830de4b93a">amax</a> (<span class="keyword">const</span> V &amp;v) {
<a name="l00061"></a>00061 <span class="keywordflow">return</span> <a class="code" href="a00595.html#a4ec479acd5e441d5b61ce20c8d13e8ac">norm_inf</a> (v);
<a name="l00062"></a>00062 }
<a name="l00063"></a>00063
<a name="l00073"></a>00073 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00074"></a>00074 <span class="keyword">typename</span> <a class="code" href="a00364.html#a9e5943e03b9d3150264b74abf791d55f">promote_traits&lt;typename V1::value_type, typename V2::value_type&gt;::promote_type</a>
<a name="l00075"></a><a class="code" href="a00651.html#a95dc5f5e3116c096ee78ed24d14f2b55">00075</a> <a class="code" href="a00651.html#a95dc5f5e3116c096ee78ed24d14f2b55">dot</a> (<span class="keyword">const</span> V1 &amp;v1, <span class="keyword">const</span> V2 &amp;v2) {
<a name="l00076"></a>00076 <span class="keywordflow">return</span> <a class="code" href="a00595.html#aacfe3c2ae581d94577facbf25c205abd">inner_prod</a> (v1, v2);
<a name="l00077"></a>00077 }
<a name="l00078"></a>00078
<a name="l00088"></a>00088 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00089"></a><a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">00089</a> V1 &amp; <a class="code" href="a00651.html#aeb7460bec576eb9c5217050d6baa4f6f">copy</a> (V1 &amp;v1, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00090"></a>00090 {
<a name="l00091"></a>00091 <span class="keywordflow">return</span> v1.assign (v2);
<a name="l00092"></a>00092 }
<a name="l00093"></a>00093
<a name="l00102"></a>00102 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00103"></a><a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">00103</a> <span class="keywordtype">void</span> <a class="code" href="a00651.html#a7359c42bdbf22249101e062d45c8fec6">swap</a> (V1 &amp;v1, V2 &amp;v2)
<a name="l00104"></a>00104 {
<a name="l00105"></a>00105 v1.swap (v2);
<a name="l00106"></a>00106 }
<a name="l00107"></a>00107
<a name="l00117"></a>00117 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V, <span class="keyword">class</span> T&gt;
<a name="l00118"></a><a class="code" href="a00651.html#a8e5af6ed9ca0d90e6daf640151c2b46a">00118</a> V &amp; <a class="code" href="a00651.html#a8e5af6ed9ca0d90e6daf640151c2b46a">scal</a> (V &amp;v, <span class="keyword">const</span> T &amp;t)
<a name="l00119"></a>00119 {
<a name="l00120"></a>00120 <span class="keywordflow">return</span> v *= t;
<a name="l00121"></a>00121 }
<a name="l00122"></a>00122
<a name="l00134"></a>00134 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V1, <span class="keyword">class</span> T, <span class="keyword">class</span> V2&gt;
<a name="l00135"></a><a class="code" href="a00651.html#aabc7566ce5b699e5620e7d39b1de40fd">00135</a> V1 &amp; <a class="code" href="a00651.html#aabc7566ce5b699e5620e7d39b1de40fd">axpy</a> (V1 &amp;v1, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00136"></a>00136 {
<a name="l00137"></a>00137 <span class="keywordflow">return</span> v1.plus_assign (t * v2);
<a name="l00138"></a>00138 }
<a name="l00139"></a>00139
<a name="l00157"></a>00157 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T1, <span class="keyword">class</span> V1, <span class="keyword">class</span> T2, <span class="keyword">class</span> V2&gt;
<a name="l00158"></a><a class="code" href="a00651.html#a69badeae884488668d2e31c387427da0">00158</a> <span class="keywordtype">void</span> <a class="code" href="a00651.html#a69badeae884488668d2e31c387427da0">rot</a> (<span class="keyword">const</span> T1 &amp;t1, V1 &amp;v1, <span class="keyword">const</span> T2 &amp;t2, V2 &amp;v2)
<a name="l00159"></a>00159 {
<a name="l00160"></a>00160 <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="a00364.html#a9e5943e03b9d3150264b74abf791d55f">promote_traits&lt;typename V1::value_type, typename V2::value_type&gt;::promote_type</a> promote_type;
<a name="l00161"></a>00161 <a class="code" href="a00481.html" title="A dense vector of values of type T.">vector&lt;promote_type&gt;</a> vt (t1 * v1 + t2 * v2);
<a name="l00162"></a>00162 v2.assign (- t2 * v1 + t1 * v2);
<a name="l00163"></a>00163 v1.assign (vt);
<a name="l00164"></a>00164 }
<a name="l00165"></a>00165
<a name="l00166"></a>00166 }
<a name="l00167"></a>00167
<a name="l00173"></a><a class="code" href="a00652.html">00173</a> <span class="keyword">namespace </span>blas_2 {
<a name="l00174"></a>00174
<a name="l00184"></a>00184 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V, <span class="keyword">class</span> M&gt;
<a name="l00185"></a><a class="code" href="a00652.html#a244fe6f03ca3d14341df2dc24e09e04c">00185</a> V &amp; <a class="code" href="a00652.html#a244fe6f03ca3d14341df2dc24e09e04c" title="multiply vector v with triangular matrix m ">tmv</a> (V &amp;v, <span class="keyword">const</span> M &amp;m)
<a name="l00186"></a>00186 {
<a name="l00187"></a>00187 <span class="keywordflow">return</span> v = <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m, v);
<a name="l00188"></a>00188 }
<a name="l00189"></a>00189
<a name="l00201"></a>00201 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V, <span class="keyword">class</span> M, <span class="keyword">class</span> C&gt;
<a name="l00202"></a><a class="code" href="a00652.html#a7ce367369a2ed805bfc4336d0a7e7ede">00202</a> V &amp; <a class="code" href="a00652.html#a7ce367369a2ed805bfc4336d0a7e7ede" title="solve in place, where m is a triangular matrix">tsv</a> (V &amp;v, <span class="keyword">const</span> M &amp;m, C)
<a name="l00203"></a>00203 {
<a name="l00204"></a>00204 <span class="keywordflow">return</span> v = <a class="code" href="a00595.html#a8377d6eca1abae4087e4d5c085f2cef7">solve</a> (m, v, C ());
<a name="l00205"></a>00205 }
<a name="l00206"></a>00206
<a name="l00222"></a>00222 <span class="keyword">template</span>&lt;<span class="keyword">class</span> V1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M, <span class="keyword">class</span> V2&gt;
<a name="l00223"></a><a class="code" href="a00652.html#aa639b6931b803732bf0530076c35c0d0">00223</a> V1 &amp; <a class="code" href="a00652.html#aa639b6931b803732bf0530076c35c0d0" title="compute , a general matrix-vector product">gmv</a> (V1 &amp;v1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M &amp;m, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00224"></a>00224 {
<a name="l00225"></a>00225 <span class="keywordflow">return</span> v1 = t1 * v1 + t2 * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m, v2);
<a name="l00226"></a>00226 }
<a name="l00227"></a>00227
<a name="l00241"></a>00241 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M, <span class="keyword">class</span> T, <span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00242"></a><a class="code" href="a00652.html#a706e332f8bf98b5788557fd52459b56b">00242</a> M &amp; <a class="code" href="a00652.html#a706e332f8bf98b5788557fd52459b56b" title="Rank 1 update: .">gr</a> (M &amp;m, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V1 &amp;v1, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00243"></a>00243 {
<a name="l00244"></a>00244 <span class="preprocessor">#ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG</span>
<a name="l00245"></a>00245 <span class="preprocessor"></span> <span class="keywordflow">return</span> m += t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, v2);
<a name="l00246"></a>00246 <span class="preprocessor">#else</span>
<a name="l00247"></a>00247 <span class="preprocessor"></span> <span class="keywordflow">return</span> m = m + t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, v2);
<a name="l00248"></a>00248 <span class="preprocessor">#endif</span>
<a name="l00249"></a>00249 <span class="preprocessor"></span> }
<a name="l00250"></a>00250
<a name="l00262"></a>00262 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M, <span class="keyword">class</span> T, <span class="keyword">class</span> V&gt;
<a name="l00263"></a><a class="code" href="a00652.html#addeca755eb0e631b7347acc0c81e4fb1">00263</a> M &amp; <a class="code" href="a00652.html#addeca755eb0e631b7347acc0c81e4fb1" title="symmetric rank 1 update: ">sr</a> (M &amp;m, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V &amp;v)
<a name="l00264"></a>00264 {
<a name="l00265"></a>00265 <span class="preprocessor">#ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG</span>
<a name="l00266"></a>00266 <span class="preprocessor"></span> <span class="keywordflow">return</span> m += t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v, v);
<a name="l00267"></a>00267 <span class="preprocessor">#else</span>
<a name="l00268"></a>00268 <span class="preprocessor"></span> <span class="keywordflow">return</span> m = m + t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v, v);
<a name="l00269"></a>00269 <span class="preprocessor">#endif</span>
<a name="l00270"></a>00270 <span class="preprocessor"></span> }
<a name="l00271"></a>00271
<a name="l00283"></a>00283 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M, <span class="keyword">class</span> T, <span class="keyword">class</span> V&gt;
<a name="l00284"></a><a class="code" href="a00652.html#ab8b9af963db5df7cf00e9cefef06acf8">00284</a> M &amp; <a class="code" href="a00652.html#ab8b9af963db5df7cf00e9cefef06acf8" title="hermitian rank 1 update: ">hr</a> (M &amp;m, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V &amp;v)
<a name="l00285"></a>00285 {
<a name="l00286"></a>00286 <span class="preprocessor">#ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG</span>
<a name="l00287"></a>00287 <span class="preprocessor"></span> <span class="keywordflow">return</span> m += t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v));
<a name="l00288"></a>00288 <span class="preprocessor">#else</span>
<a name="l00289"></a>00289 <span class="preprocessor"></span> <span class="keywordflow">return</span> m = m + t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v));
<a name="l00290"></a>00290 <span class="preprocessor">#endif</span>
<a name="l00291"></a>00291 <span class="preprocessor"></span> }
<a name="l00292"></a>00292
<a name="l00306"></a>00306 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M, <span class="keyword">class</span> T, <span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00307"></a><a class="code" href="a00652.html#a790a1407ea628d1dbf215462ddab3234">00307</a> M &amp; <a class="code" href="a00652.html#a790a1407ea628d1dbf215462ddab3234" title="symmetric rank 2 update: ">sr2</a> (M &amp;m, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V1 &amp;v1, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00308"></a>00308 {
<a name="l00309"></a>00309 <span class="preprocessor">#ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG</span>
<a name="l00310"></a>00310 <span class="preprocessor"></span> <span class="keywordflow">return</span> m += t * (<a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, v2) + <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v2, v1));
<a name="l00311"></a>00311 <span class="preprocessor">#else</span>
<a name="l00312"></a>00312 <span class="preprocessor"></span> <span class="keywordflow">return</span> m = m + t * (<a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, v2) + <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v2, v1));
<a name="l00313"></a>00313 <span class="preprocessor">#endif</span>
<a name="l00314"></a>00314 <span class="preprocessor"></span> }
<a name="l00315"></a>00315
<a name="l00329"></a>00329 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M, <span class="keyword">class</span> T, <span class="keyword">class</span> V1, <span class="keyword">class</span> V2&gt;
<a name="l00330"></a><a class="code" href="a00652.html#a73ce3e5bcfc5b27eae66f3f4e5e07be7">00330</a> M &amp; <a class="code" href="a00652.html#a73ce3e5bcfc5b27eae66f3f4e5e07be7" title="hermitian rank 2 update: ">hr2</a> (M &amp;m, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> V1 &amp;v1, <span class="keyword">const</span> V2 &amp;v2)
<a name="l00331"></a>00331 {
<a name="l00332"></a>00332 <span class="preprocessor">#ifndef BOOST_UBLAS_SIMPLE_ET_DEBUG</span>
<a name="l00333"></a>00333 <span class="preprocessor"></span> <span class="keywordflow">return</span> m += t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v2)) + <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">type_traits&lt;T&gt;::conj</a> (t) * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v2, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v1));
<a name="l00334"></a>00334 <span class="preprocessor">#else</span>
<a name="l00335"></a>00335 <span class="preprocessor"></span> <span class="keywordflow">return</span> m = m + t * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v1, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v2)) + <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">type_traits&lt;T&gt;::conj</a> (t) * <a class="code" href="a00595.html#a1ec699972aadfd0a7323cd130fca8fa3">outer_prod</a> (v2, <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">conj</a> (v1));
<a name="l00336"></a>00336 <span class="preprocessor">#endif</span>
<a name="l00337"></a>00337 <span class="preprocessor"></span> }
<a name="l00338"></a>00338
<a name="l00339"></a>00339 }
<a name="l00340"></a>00340
<a name="l00346"></a><a class="code" href="a00599.html">00346</a> <span class="keyword">namespace </span>blas_3 {
<a name="l00347"></a>00347
<a name="l00362"></a>00362 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T, <span class="keyword">class</span> M2, <span class="keyword">class</span> M3&gt;
<a name="l00363"></a><a class="code" href="a00599.html#ac37ed088f63339d4d384bb66dbc43aa8">00363</a> M1 &amp; <a class="code" href="a00599.html#ac37ed088f63339d4d384bb66dbc43aa8" title="triangular matrix multiplication where and are triangular">tmm</a> (M1 &amp;m1, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> M2 &amp;m2, <span class="keyword">const</span> M3 &amp;m3)
<a name="l00364"></a>00364 {
<a name="l00365"></a>00365 <span class="keywordflow">return</span> m1 = t * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, m3);
<a name="l00366"></a>00366 }
<a name="l00367"></a>00367
<a name="l00381"></a>00381 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T, <span class="keyword">class</span> M2, <span class="keyword">class</span> C&gt;
<a name="l00382"></a><a class="code" href="a00599.html#a1b82ba61192fb957f032cabd64867e6a">00382</a> M1 &amp; <a class="code" href="a00599.html#a1b82ba61192fb957f032cabd64867e6a" title="triangular solve in place, is a triangular matrix">tsm</a> (M1 &amp;m1, <span class="keyword">const</span> T &amp;t, <span class="keyword">const</span> M2 &amp;m2, C)
<a name="l00383"></a>00383 {
<a name="l00384"></a>00384 <span class="keywordflow">return</span> m1 = <a class="code" href="a00595.html#a8377d6eca1abae4087e4d5c085f2cef7">solve</a> (m2, t * m1, C ());
<a name="l00385"></a>00385 }
<a name="l00386"></a>00386
<a name="l00402"></a>00402 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M2, <span class="keyword">class</span> M3&gt;
<a name="l00403"></a><a class="code" href="a00599.html#ae516fcacfaeb952ef7714fcde005c6d1">00403</a> M1 &amp; <a class="code" href="a00599.html#ae516fcacfaeb952ef7714fcde005c6d1" title="general matrix multiplication ">gmm</a> (M1 &amp;m1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M2 &amp;m2, <span class="keyword">const</span> M3 &amp;m3)
<a name="l00404"></a>00404 {
<a name="l00405"></a>00405 <span class="keywordflow">return</span> m1 = t1 * m1 + t2 * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, m3);
<a name="l00406"></a>00406 }
<a name="l00407"></a>00407
<a name="l00422"></a>00422 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M2&gt;
<a name="l00423"></a><a class="code" href="a00599.html#ab29a975ac7bc32c85eb0363e800f439f">00423</a> M1 &amp; <a class="code" href="a00599.html#ab29a975ac7bc32c85eb0363e800f439f" title="symmetric rank k update: ">srk</a> (M1 &amp;m1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M2 &amp;m2)
<a name="l00424"></a>00424 {
<a name="l00425"></a>00425 <span class="keywordflow">return</span> m1 = t1 * m1 + t2 * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, <a class="code" href="a00595.html#a7c74dc462ba55f7bf262a6d4fe7b808e">trans</a> (m2));
<a name="l00426"></a>00426 }
<a name="l00427"></a>00427
<a name="l00442"></a>00442 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M2&gt;
<a name="l00443"></a><a class="code" href="a00599.html#a8ce9ff31a8d62bde74fbae9dd391790d">00443</a> M1 &amp; <a class="code" href="a00599.html#a8ce9ff31a8d62bde74fbae9dd391790d" title="hermitian rank k update: ">hrk</a> (M1 &amp;m1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M2 &amp;m2)
<a name="l00444"></a>00444 {
<a name="l00445"></a>00445 <span class="keywordflow">return</span> m1 = t1 * m1 + t2 * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, <a class="code" href="a00595.html#a297ef15da6af3abef7e368c79ed76477">herm</a> (m2));
<a name="l00446"></a>00446 }
<a name="l00447"></a>00447
<a name="l00464"></a>00464 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M2, <span class="keyword">class</span> M3&gt;
<a name="l00465"></a><a class="code" href="a00599.html#a0e0f51634ff9e11be9670c5c88ff64b6">00465</a> M1 &amp; <a class="code" href="a00599.html#a0e0f51634ff9e11be9670c5c88ff64b6" title="generalized symmetric rank k update: ">sr2k</a> (M1 &amp;m1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M2 &amp;m2, <span class="keyword">const</span> M3 &amp;m3)
<a name="l00466"></a>00466 {
<a name="l00467"></a>00467 <span class="keywordflow">return</span> m1 = t1 * m1 + t2 * (<a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, <a class="code" href="a00595.html#a7c74dc462ba55f7bf262a6d4fe7b808e">trans</a> (m3)) + <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m3, <a class="code" href="a00595.html#a7c74dc462ba55f7bf262a6d4fe7b808e">trans</a> (m2)));
<a name="l00468"></a>00468 }
<a name="l00469"></a>00469
<a name="l00486"></a>00486 <span class="keyword">template</span>&lt;<span class="keyword">class</span> M1, <span class="keyword">class</span> T1, <span class="keyword">class</span> T2, <span class="keyword">class</span> M2, <span class="keyword">class</span> M3&gt;
<a name="l00487"></a><a class="code" href="a00599.html#ad4c048402e77418e0bd209565223b815">00487</a> M1 &amp; <a class="code" href="a00599.html#ad4c048402e77418e0bd209565223b815" title="generalized hermitian rank k update: * ">hr2k</a> (M1 &amp;m1, <span class="keyword">const</span> T1 &amp;t1, <span class="keyword">const</span> T2 &amp;t2, <span class="keyword">const</span> M2 &amp;m2, <span class="keyword">const</span> M3 &amp;m3)
<a name="l00488"></a>00488 {
<a name="l00489"></a>00489 <span class="keywordflow">return</span> m1 =
<a name="l00490"></a>00490 t1 * m1
<a name="l00491"></a>00491 + t2 * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m2, <a class="code" href="a00595.html#a297ef15da6af3abef7e368c79ed76477">herm</a> (m3))
<a name="l00492"></a>00492 + <a class="code" href="a00595.html#a66f888cfb70f1e904e5c7ec1d1d6e514">type_traits&lt;T2&gt;::conj</a> (t2) * <a class="code" href="a00595.html#a80a491b0d654ad0d661a7ed3b272db88">prod</a> (m3, <a class="code" href="a00595.html#a297ef15da6af3abef7e368c79ed76477">herm</a> (m2));
<a name="l00493"></a>00493 }
<a name="l00494"></a>00494
<a name="l00495"></a>00495 }
<a name="l00496"></a>00496
<a name="l00497"></a>00497 }}}
<a name="l00498"></a>00498
<a name="l00499"></a>00499 <span class="preprocessor">#endif</span>
</pre></div></div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="a00598.html">blas.hpp</a> </li>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Defines</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<small>
<small>
<small>
<table width="100%">
<tr>
<td align="right">
Copyright &#169; 2010-2011 David Bellot - Distributed under the <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">Boost Software License, Version 1.0.</a>
</td>
</tr>
</table>
</small>
</small>
</small>