Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 0b420d0fce195cf4115dc6a3be5c2da2 > files > 282

sphinxbase-devel-0.7-1.fc14.i686.rpm

<!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>SphinxBase: include/sphinxbase/matrix.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<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>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">SphinxBase&#160;<span id="projectnumber">0.6</span></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="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></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>Globals</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('matrix_8h.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>include/sphinxbase/matrix.h File Reference</h1>  </div>
</div>
<div class="contents">

<p>Matrix and linear algebra functions.  
<a href="#_details">More...</a></p>
<div class="textblock"><code>#include &lt;sphinxbase/sphinxbase_export.h&gt;</code><br/>
<code>#include &lt;sphinxbase/prim_type.h&gt;</code><br/>
</div>
<p><a href="matrix_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#af209fc89926fd184f5a02919ec7c9818">norm_3d</a> (float32 ***arr, uint32 d1, uint32 d2, uint32 d3)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Norm an array.  <a href="#af209fc89926fd184f5a02919ec7c9818"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#abf02a99f3dac599148c0e1ee5640b568">accum_3d</a> (float32 ***out, float32 ***in, uint32 d1, uint32 d2, uint32 d3)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Floor 3-d array.  <a href="#abf02a99f3dac599148c0e1ee5640b568"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a859d32f6b8e86fb215f676245c8deeaf">band_nz_1d</a> (float32 *v, uint32 d1, float32 band)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Ensures that non-zero values x such that -band &lt; x &lt; band, band &gt; 0 are set to -band if x &lt; 0 and band if x &gt; 0.  <a href="#a859d32f6b8e86fb215f676245c8deeaf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a7b18b907fca64a8057f7406b8996d9c9">floor_nz_3d</a> (float32 ***m, uint32 d1, uint32 d2, uint32 d3, float32 floor)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Floor 3-d array.  <a href="#a7b18b907fca64a8057f7406b8996d9c9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a0ec7000944b98cce317e0b63ce437b99">floor_nz_1d</a> (float32 *v, uint32 d1, float32 floor)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Floor 1-d array.  <a href="#a0ec7000944b98cce317e0b63ce437b99"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT float64&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a0c810028195f6078c9e99f3b5c29c42b">determinant</a> (float32 **a, int32 len)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the determinant of a positive definite matrix.  <a href="#a0c810028195f6078c9e99f3b5c29c42b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#aa20f437dbe9fcd6f0adda31f181bfbea">invert</a> (float32 **out_ainv, float32 **a, int32 len)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Invert (if possible) a positive definite matrix.  <a href="#aa20f437dbe9fcd6f0adda31f181bfbea"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT int32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a174a82dac39a15828af6c87edcba3708">solve</a> (float32 **a, float32 *b, float32 *out_x, int32 n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Solve (if possible) a positive-definite system of linear equations AX=B for X.  <a href="#a174a82dac39a15828af6c87edcba3708"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#aa2d31d63ec277fd389d4ef51d3b2bc2b">outerproduct</a> (float32 **out_a, float32 *x, float32 *y, int32 len)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Calculate the outer product of two vectors.  <a href="#aa2d31d63ec277fd389d4ef51d3b2bc2b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#acaaf5d2c02d9d12f10abc462ac65cde9">matrixmultiply</a> (float32 **out_c, float32 **a, float32 **b, int32 n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply C=AB where A and B are symmetric matrices.  <a href="#acaaf5d2c02d9d12f10abc462ac65cde9"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#adc8ee5f4e4792328e4f33309bc99ebfb">scalarmultiply</a> (float32 **inout_a, float32 x, int32 n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiply a symmetric matrix by a constant in-place.  <a href="#adc8ee5f4e4792328e4f33309bc99ebfb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">SPHINXBASE_EXPORT void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#a545d251a51cc473bad38a83b2a05f61c">matrixadd</a> (float32 **inout_a, float32 **b, int32 n)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Add A += B.  <a href="#a545d251a51cc473bad38a83b2a05f61c"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Matrix and linear algebra functions. </p>
<p>This file contains some basic matrix and linear algebra operations. In general these operate on positive definite matrices ONLY, because all matrices we're likely to encounter are either covariance matrices or are derived from them, and therefore a non-positive-definite matrix indicates some kind of pathological condition. </p>

<p>Definition in file <a class="el" href="matrix_8h_source.html">matrix.h</a>.</p>
</div><hr/><h2>Function Documentation</h2>
<a class="anchor" id="abf02a99f3dac599148c0e1ee5640b568"></a><!-- doxytag: member="matrix.h::accum_3d" ref="abf02a99f3dac599148c0e1ee5640b568" args="(float32 ***out, float32 ***in, uint32 d1, uint32 d2, uint32 d3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void accum_3d </td>
          <td>(</td>
          <td class="paramtype">float32 ***&#160;</td>
          <td class="paramname"><em>out</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 ***&#160;</td>
          <td class="paramname"><em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d3</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Floor 3-d array. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out</td><td>output array  in input array </td></tr>
    <tr><td class="paramname">d1</td><td>dimension </td></tr>
    <tr><td class="paramname">d2</td><td>dimension </td></tr>
    <tr><td class="paramname">d3</td><td>dimension </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00078">78</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00078">accum_3d()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00078">accum_3d()</a>.</p>

</div>
</div>
<a class="anchor" id="a859d32f6b8e86fb215f676245c8deeaf"></a><!-- doxytag: member="matrix.h::band_nz_1d" ref="a859d32f6b8e86fb215f676245c8deeaf" args="(float32 *v, uint32 d1, float32 band)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void band_nz_1d </td>
          <td>(</td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32&#160;</td>
          <td class="paramname"><em>band</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Ensures that non-zero values x such that -band &lt; x &lt; band, band &gt; 0 are set to -band if x &lt; 0 and band if x &gt; 0. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v</td><td>array </td></tr>
    <tr><td class="paramname">d1</td><td>array size </td></tr>
    <tr><td class="paramname">band</td><td>band value </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00127">127</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00127">band_nz_1d()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00127">band_nz_1d()</a>.</p>

</div>
</div>
<a class="anchor" id="a0c810028195f6078c9e99f3b5c29c42b"></a><!-- doxytag: member="matrix.h::determinant" ref="a0c810028195f6078c9e99f3b5c29c42b" args="(float32 **a, int32 len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT float64 determinant </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calculate the determinant of a positive definite matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>The input matrix, must be positive definite. </td></tr>
    <tr><td class="paramname">len</td><td>The dimension of the input matrix. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>The determinant of the input matrix, or -1.0 if the matrix is not positive definite.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>These can be vanishingly small hence the float64 return type. Also note that only the upper triangular portion of a is considered, therefore the check for positive-definiteness is not reliable. </dd></dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00147">147</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00147">determinant()</a>, and <a class="el" href="err_8h_source.html#l00127">E_FATAL</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00147">determinant()</a>.</p>

</div>
</div>
<a class="anchor" id="a0ec7000944b98cce317e0b63ce437b99"></a><!-- doxytag: member="matrix.h::floor_nz_1d" ref="a0ec7000944b98cce317e0b63ce437b99" args="(float32 *v, uint32 d1, float32 floor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void floor_nz_1d </td>
          <td>(</td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32&#160;</td>
          <td class="paramname"><em>floor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Floor 1-d array. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">m</td><td>array </td></tr>
    <tr><td class="paramname">d1</td><td>dimension </td></tr>
    <tr><td class="paramname">floor</td><td>floor value </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00114">114</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00114">floor_nz_1d()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00114">floor_nz_1d()</a>.</p>

</div>
</div>
<a class="anchor" id="a7b18b907fca64a8057f7406b8996d9c9"></a><!-- doxytag: member="matrix.h::floor_nz_3d" ref="a7b18b907fca64a8057f7406b8996d9c9" args="(float32 ***m, uint32 d1, uint32 d2, uint32 d3, float32 floor)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void floor_nz_3d </td>
          <td>(</td>
          <td class="paramtype">float32 ***&#160;</td>
          <td class="paramname"><em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32&#160;</td>
          <td class="paramname"><em>floor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Floor 3-d array. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">m</td><td>array </td></tr>
    <tr><td class="paramname">d1</td><td>dimension </td></tr>
    <tr><td class="paramname">d2</td><td>dimension </td></tr>
    <tr><td class="paramname">d3</td><td>dimension </td></tr>
    <tr><td class="paramname">floor</td><td>floor value </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00096">96</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00096">floor_nz_3d()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00096">floor_nz_3d()</a>.</p>

</div>
</div>
<a class="anchor" id="aa20f437dbe9fcd6f0adda31f181bfbea"></a><!-- doxytag: member="matrix.h::invert" ref="aa20f437dbe9fcd6f0adda31f181bfbea" args="(float32 **out_ainv, float32 **a, int32 len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT int32 invert </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>out_ainv</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Invert (if possible) a positive definite matrix. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out_ainv</td><td>The inverse of a will be stored here. </td></tr>
    <tr><td class="paramname">a</td><td>The input matrix, must be positive definite. </td></tr>
    <tr><td class="paramname">len</td><td>The dimension of the input matrix. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success or -1 for a non-positive-definite matrix.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Only the upper triangular portion of a is considered, therefore the check for positive-definiteness is not reliable. </dd></dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00153">153</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="err_8h_source.html#l00127">E_FATAL</a>, and <a class="el" href="matrix_8c_source.html#l00153">invert()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00153">invert()</a>.</p>

</div>
</div>
<a class="anchor" id="a545d251a51cc473bad38a83b2a05f61c"></a><!-- doxytag: member="matrix.h::matrixadd" ref="a545d251a51cc473bad38a83b2a05f61c" args="(float32 **inout_a, float32 **b, int32 n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void matrixadd </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>inout_a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Add A += B. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">inout_a</td><td>The A matrix to add. </td></tr>
    <tr><td class="paramname">b</td><td>The B matrix to add to A. </td></tr>
    <tr><td class="paramname">n</td><td>dimension of a and b. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00306">306</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00306">matrixadd()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00306">matrixadd()</a>.</p>

</div>
</div>
<a class="anchor" id="acaaf5d2c02d9d12f10abc462ac65cde9"></a><!-- doxytag: member="matrix.h::matrixmultiply" ref="acaaf5d2c02d9d12f10abc462ac65cde9" args="(float32 **out_c, float32 **a, float32 **b, int32 n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void matrixmultiply </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>out_c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Multiply C=AB where A and B are symmetric matrices. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out_c</td><td>The output matrix C. </td></tr>
    <tr><td class="paramname">a</td><td>The input matrix A. </td></tr>
    <tr><td class="paramname">b</td><td>The input matrix B. </td></tr>
    <tr><td class="paramname">n</td><td>Dimensionality of A and B. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00166">166</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00166">matrixmultiply()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00166">matrixmultiply()</a>.</p>

</div>
</div>
<a class="anchor" id="af209fc89926fd184f5a02919ec7c9818"></a><!-- doxytag: member="matrix.h::norm_3d" ref="af209fc89926fd184f5a02919ec7c9818" args="(float32 ***arr, uint32 d1, uint32 d2, uint32 d3)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void norm_3d </td>
          <td>(</td>
          <td class="paramtype">float32 ***&#160;</td>
          <td class="paramname"><em>arr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32&#160;</td>
          <td class="paramname"><em>d3</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Norm an array. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">arr</td><td>array </td></tr>
    <tr><td class="paramname">d1</td><td>dimension </td></tr>
    <tr><td class="paramname">d2</td><td>dimension </td></tr>
    <tr><td class="paramname">d3</td><td>dimension </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00050">50</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00050">norm_3d()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00050">norm_3d()</a>.</p>

</div>
</div>
<a class="anchor" id="aa2d31d63ec277fd389d4ef51d3b2bc2b"></a><!-- doxytag: member="matrix.h::outerproduct" ref="aa2d31d63ec277fd389d4ef51d3b2bc2b" args="(float32 **out_a, float32 *x, float32 *y, int32 len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void outerproduct </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>out_a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Calculate the outer product of two vectors. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">out_a</td><td>A (pre-allocated) len x len array. The outer product will be stored here. </td></tr>
    <tr><td class="paramname">x</td><td>A vector of length len. </td></tr>
    <tr><td class="paramname">y</td><td>A vector of length len. </td></tr>
    <tr><td class="paramname">len</td><td>The length of the input vectors. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00278">278</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00278">outerproduct()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00278">outerproduct()</a>.</p>

</div>
</div>
<a class="anchor" id="adc8ee5f4e4792328e4f33309bc99ebfb"></a><!-- doxytag: member="matrix.h::scalarmultiply" ref="adc8ee5f4e4792328e4f33309bc99ebfb" args="(float32 **inout_a, float32 x, int32 n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT void scalarmultiply </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>inout_a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Multiply a symmetric matrix by a constant in-place. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">inout_a</td><td>The matrix to multiply. </td></tr>
    <tr><td class="paramname">x</td><td>The constant to multiply it by. </td></tr>
    <tr><td class="paramname">n</td><td>dimension of a. </td></tr>
  </table>
  </dd>
</dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00292">292</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="matrix_8c_source.html#l00292">scalarmultiply()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00292">scalarmultiply()</a>.</p>

</div>
</div>
<a class="anchor" id="a174a82dac39a15828af6c87edcba3708"></a><!-- doxytag: member="matrix.h::solve" ref="a174a82dac39a15828af6c87edcba3708" args="(float32 **a, float32 *b, float32 *out_x, int32 n)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">SPHINXBASE_EXPORT int32 solve </td>
          <td>(</td>
          <td class="paramtype">float32 **&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float32 *&#160;</td>
          <td class="paramname"><em>out_x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int32&#160;</td>
          <td class="paramname"><em>n</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Solve (if possible) a positive-definite system of linear equations AX=B for X. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">a</td><td>The A matrix on the left-hand side of the equation, must be positive-definite. </td></tr>
    <tr><td class="paramname">b</td><td>The B vector on the right-hand side of the equation. </td></tr>
    <tr><td class="paramname">out_x</td><td>The X vector will be stored here. </td></tr>
    <tr><td class="paramname">n</td><td>The dimension of the A matrix (n by n) and the B and X vectors. </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 for success or -1 for a non-positive-definite matrix.</dd></dl>
<dl class="note"><dt><b>Note:</b></dt><dd>Only the upper triangular portion of a is considered, therefore the check for positive-definiteness is not reliable. </dd></dl>

<p>Definition at line <a class="el" href="matrix_8c_source.html#l00159">159</a> of file <a class="el" href="matrix_8c_source.html">matrix.c</a>.</p>

<p>References <a class="el" href="err_8h_source.html#l00127">E_FATAL</a>, and <a class="el" href="matrix_8c_source.html#l00159">solve()</a>.</p>

<p>Referenced by <a class="el" href="matrix_8c_source.html#l00159">solve()</a>.</p>

</div>
</div>
</div>
</div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="matrix_8h.html">matrix.h</a>      </li>
      <li class="footer">Generated on Tue Apr 19 2011 for SphinxBase by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </li>
    </ul>
  </div>

</body>
</html>