Subversion Repositories AndroidProjects

Rev

Blame | Last modification | View Log | RSS feed

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
                <title>ARToolKit API Documentation</title>
                <link href="doxygen.css" rel="stylesheet" type="text/css">
        </head>
        <body>
<!-- Generated by Doxygen 1.4.6 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<h1>matrix.h File Reference</h1>ARToolkit algebric mathematics subroutines. <a href="#_details">More...</a>
<p>
<code>#include &lt;math.h&gt;</code><br>
<code>#include &lt;AR/config.h&gt;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structARMat.html">ARMat</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">matrix structure.  <a href="structARMat.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structARVec.html">ARVec</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">vector structure.  <a href="structARVec.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7a935ae1197adde7e3476dbfbfc4f99e"></a><!-- doxytag: member="matrix.h::ARELEM0" ref="7a935ae1197adde7e3476dbfbfc4f99e" args="(mat, r, c)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#7a935ae1197adde7e3476dbfbfc4f99e">ARELEM0</a>(mat, r, c)&nbsp;&nbsp;&nbsp;((mat)-&gt;m[(r)*((mat)-&gt;clm)+(c)])</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">macro function that give direct access to an element (0 origin) <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f33714038d5eb3748816c2361af9d7b2"></a><!-- doxytag: member="matrix.h::ARELEM1" ref="f33714038d5eb3748816c2361af9d7b2" args="(mat, row, clm)" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#f33714038d5eb3748816c2361af9d7b2">ARELEM1</a>(mat, row, clm)&nbsp;&nbsp;&nbsp;ARELEM0(mat,row-1,clm-1)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">macro function that give direct access to an element (1 origin) <br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#69c9a974dc5a3963148ebb2c4a80f969">arMatrixAlloc</a> (int row, int clm)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates a new matrix.  <a href="#69c9a974dc5a3963148ebb2c4a80f969"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#c4b7a714cce9fffda773d86363380454">arMatrixFree</a> (<a class="el" href="structARMat.html">ARMat</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">deletes a matrix.  <a href="#c4b7a714cce9fffda773d86363380454"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#988e4c76394edccbf1e86005b97f725a">arMatrixDup</a> (<a class="el" href="structARMat.html">ARMat</a> *dest, <a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">copy a matrix  <a href="#988e4c76394edccbf1e86005b97f725a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#ce5d8c6eb6524469fbc3770081658081">arMatrixAllocDup</a> (<a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dumps a new matrix  <a href="#ce5d8c6eb6524469fbc3770081658081"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#8c8ecb09b4faa2e37ea4b0a48be9fa5f">arMatrixUnit</a> (<a class="el" href="structARMat.html">ARMat</a> *unit)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a unit matrix.  <a href="#8c8ecb09b4faa2e37ea4b0a48be9fa5f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#df89adb96eae03112c40dd44455632ba">arMatrixAllocUnit</a> (int dim)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a unit matrix.  <a href="#df89adb96eae03112c40dd44455632ba"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#202bc2db43d563792c99e852ea0b7ba4">arMatrixMul</a> (<a class="el" href="structARMat.html">ARMat</a> *dest, <a class="el" href="structARMat.html">ARMat</a> *a, <a class="el" href="structARMat.html">ARMat</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply two matrix.  <a href="#202bc2db43d563792c99e852ea0b7ba4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#8e99293b68c38ce8a8d1920884d69f73">arMatrixAllocMul</a> (<a class="el" href="structARMat.html">ARMat</a> *a, <a class="el" href="structARMat.html">ARMat</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply two matrix with memory allocation.  <a href="#8e99293b68c38ce8a8d1920884d69f73"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#d3d9712dd27f655902a8a3315e623d85">arMatrixTrans</a> (<a class="el" href="structARMat.html">ARMat</a> *dest, <a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">transposes a matrix.  <a href="#d3d9712dd27f655902a8a3315e623d85"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#4e2bf8cd529487fb1ff4d0bbc52eee1e">arMatrixAllocTrans</a> (<a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">transposes a matrix with allocation.  <a href="#4e2bf8cd529487fb1ff4d0bbc52eee1e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#bebae87acb77ccf8cd0c5da106238a86">arMatrixInv</a> (<a class="el" href="structARMat.html">ARMat</a> *dest, <a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverse a matrix.  <a href="#bebae87acb77ccf8cd0c5da106238a86"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#929738025b539a0c1bbd2f395ad4d981">arMatrixSelfInv</a> (<a class="el" href="structARMat.html">ARMat</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverses a matrix.  <a href="#929738025b539a0c1bbd2f395ad4d981"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#fa96447f0f5d980c24357f31c635ab3e">arMatrixAllocInv</a> (<a class="el" href="structARMat.html">ARMat</a> *source)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverses a matrix.  <a href="#fa96447f0f5d980c24357f31c635ab3e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#d62b7d75215876f66f92fdafc468f476">arMatrixDet</a> (<a class="el" href="structARMat.html">ARMat</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute determinant of a matrix.  <a href="#d62b7d75215876f66f92fdafc468f476"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#04d062f49b83d57ac0dec5e906dfcd32">arMatrixPCA</a> (<a class="el" href="structARMat.html">ARMat</a> *input, <a class="el" href="structARMat.html">ARMat</a> *evec, <a class="el" href="structARVec.html">ARVec</a> *ev, <a class="el" href="structARVec.html">ARVec</a> *mean)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute the PCA of a matrix.  <a href="#04d062f49b83d57ac0dec5e906dfcd32"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#c30a83b25ff3599f4b0082203dff0fac">arMatrixPCA2</a> (<a class="el" href="structARMat.html">ARMat</a> *input, <a class="el" href="structARMat.html">ARMat</a> *evec, <a class="el" href="structARVec.html">ARVec</a> *ev)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute the PCA of a matrix.  <a href="#c30a83b25ff3599f4b0082203dff0fac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#60f36997579d355f6030f872faad84a2">arMatrixDisp</a> (<a class="el" href="structARMat.html">ARMat</a> *m)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display content of a matrix.  <a href="#60f36997579d355f6030f872faad84a2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#24a15cbbf606806e8a494f4943fb12fe">arVecAlloc</a> (int clm)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates a new vector.  <a href="#24a15cbbf606806e8a494f4943fb12fe"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#08c0d02dd8ddfb8a05d07f3fb80db2c4">arVecFree</a> (<a class="el" href="structARVec.html">ARVec</a> *v)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete a vector.  <a href="#08c0d02dd8ddfb8a05d07f3fb80db2c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#217351e5d447becfd775ba7d8bb72881">arVecDisp</a> (<a class="el" href="structARVec.html">ARVec</a> *v)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display a vector.  <a href="#217351e5d447becfd775ba7d8bb72881"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#2bac850b0a541eeca80cd83b81d2e44e">arVecHousehold</a> (<a class="el" href="structARVec.html">ARVec</a> *x)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XXXBK.  <a href="#2bac850b0a541eeca80cd83b81d2e44e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#c10c5bda849bb765f1371ee2267e3ea5">arVecInnerproduct</a> (<a class="el" href="structARVec.html">ARVec</a> *x, <a class="el" href="structARVec.html">ARVec</a> *y)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes the inner product of 2 vectors.  <a href="#c10c5bda849bb765f1371ee2267e3ea5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#0411e88f92b95ecf0697c27f9bf9163d">arVecTridiagonalize</a> (<a class="el" href="structARMat.html">ARMat</a> *a, <a class="el" href="structARVec.html">ARVec</a> *d, <a class="el" href="structARVec.html">ARVec</a> *e)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XXXBK.  <a href="#0411e88f92b95ecf0697c27f9bf9163d"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
ARToolkit algebric mathematics subroutines.
<p>
This package include matrix, vector manipulation routine. In complement to must classical routines (inversion, innerproduct), it includes a PCA (Principal) Component Analysis) routine. For the structure of the matrix see <a class="el" href="structARMat.html">ARMat</a>. <dl compact><dt><b>Remarks:</b></dt><dd></dd></dl>
History :<p>
<dl compact><dt><b>Author:</b></dt><dd>Hirokazu Kato <a href="mailto:kato@sys.im.hiroshima-cu.ac.jp">kato@sys.im.hiroshima-cu.ac.jp</a> </dd></dl>
<dl compact><dt><b>Version:</b></dt><dd></dd></dl>
<dl compact><dt><b>Date:</b></dt><dd></dd></dl>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="69c9a974dc5a3963148ebb2c4a80f969"></a><!-- doxytag: member="matrix.h::arMatrixAlloc" ref="69c9a974dc5a3963148ebb2c4a80f969" args="(int row, int clm)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAlloc           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">int&nbsp;</td>
          <td class="mdname" nowrap> <em>row</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap>int&nbsp;</td>
          <td class="mdname" nowrap> <em>clm</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
creates a new matrix.
<p>
Allocate and initialize a new matrix structure. XXXBK initializing ?? to 0 m ?? <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>number of line </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>clm</em>&nbsp;</td><td>number of column </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the matrix structure, NULL if allocation is impossible </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="ce5d8c6eb6524469fbc3770081658081"></a><!-- doxytag: member="matrix.h::arMatrixAllocDup" ref="ce5d8c6eb6524469fbc3770081658081" args="(ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocDup           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
dumps a new matrix
<p>
Allocates and recopy the original source matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source matrix to copy </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the matrix if success, NULL if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="fa96447f0f5d980c24357f31c635ab3e"></a><!-- doxytag: member="matrix.h::arMatrixAllocInv" ref="fa96447f0f5d980c24357f31c635ab3e" args="(ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixAllocInv           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
inverses a matrix.
<p>
Inverses a matrix and copy the result in in a new allocated structure. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the matrix to inverse </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the inversed matrix if success, NULL if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="8e99293b68c38ce8a8d1920884d69f73"></a><!-- doxytag: member="matrix.h::arMatrixAllocMul" ref="8e99293b68c38ce8a8d1920884d69f73" args="(ARMat *a, ARMat *b)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocMul           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>b</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Multiply two matrix with memory allocation.
<p>
multiply two matrix and copy the result in a new allocate matrix (the source matrix is unmodified). the product is this one : dest = a * b<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>first matrix </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>second matrix </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the allocated matrix if success, NULL if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="4e2bf8cd529487fb1ff4d0bbc52eee1e"></a><!-- doxytag: member="matrix.h::arMatrixAllocTrans" ref="4e2bf8cd529487fb1ff4d0bbc52eee1e" args="(ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocTrans           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
transposes a matrix with allocation.
<p>
transposes a matrix and copy the result in a new allocate matrix (the source matrix is unmodified). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the matrix to transpose </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the allocated matrix if success, NULL if error (creation or transposition impossible) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="df89adb96eae03112c40dd44455632ba"></a><!-- doxytag: member="matrix.h::arMatrixAllocUnit" ref="df89adb96eae03112c40dd44455632ba" args="(int dim)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixAllocUnit           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">int&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>dim</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Creates a unit matrix.
<p>
Allocates and initializes a matrix to a an identity matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dim</em>&nbsp;</td><td>dimensions of the unit matrix (square) </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the matrix allocated if success, NULL if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="d62b7d75215876f66f92fdafc468f476"></a><!-- doxytag: member="matrix.h::arMatrixDet" ref="d62b7d75215876f66f92fdafc468f476" args="(ARMat *m)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixDet           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
compute determinant of a matrix.
<p>
Compute the determinant of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>matrix source </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the computed determinant </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="60f36997579d355f6030f872faad84a2"></a><!-- doxytag: member="matrix.h::arMatrixDisp" ref="60f36997579d355f6030f872faad84a2" args="(ARMat *m)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixDisp           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
display content of a matrix.
<p>
Display in current console, the content of the matrix. The display is done line by line. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td></td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="988e4c76394edccbf1e86005b97f725a"></a><!-- doxytag: member="matrix.h::arMatrixDup" ref="988e4c76394edccbf1e86005b97f725a" args="(ARMat *dest, ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixDup           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>source</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
copy a matrix
<p>
copy one matrix to another. The two <a class="el" href="structARMat.html">ARMat</a> must be allocated. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination matrix of the copy </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the original matrix source </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (matrix with different size) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="c4b7a714cce9fffda773d86363380454"></a><!-- doxytag: member="matrix.h::arMatrixFree" ref="c4b7a714cce9fffda773d86363380454" args="(ARMat *m)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixFree           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
deletes a matrix.
<p>
Delete a matrix structure (deallocate used memory). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>matrix to delete </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="bebae87acb77ccf8cd0c5da106238a86"></a><!-- doxytag: member="matrix.h::arMatrixInv" ref="bebae87acb77ccf8cd0c5da106238a86" args="(ARMat *dest, ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixInv           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>source</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
inverse a matrix.
<p>
inverse a matrix and copy the result in a new one (the source matrix is unmodified). the destination matrix must be allocated. the source matrix need to be a square matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>result matrix of the inverse operation </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>source matrix </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (not square matrix) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="202bc2db43d563792c99e852ea0b7ba4"></a><!-- doxytag: member="matrix.h::arMatrixMul" ref="202bc2db43d563792c99e852ea0b7ba4" args="(ARMat *dest, ARMat *a, ARMat *b)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixMul           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>b</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Multiply two matrix.
<p>
Multiply two matrix and copy the result in another the product is this one : dest = a * b. The destination matrix must be allocated. Matrix a and b need to have the same size (the source matrix is unmodified). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>final matrix product </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>first matrix </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>second matrix </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (multiplication impossible, or destination matrix have not comptabile size) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="04d062f49b83d57ac0dec5e906dfcd32"></a><!-- doxytag: member="matrix.h::arMatrixPCA" ref="04d062f49b83d57ac0dec5e906dfcd32" args="(ARMat *input, ARMat *evec, ARVec *ev, ARVec *mean)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixPCA           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>input</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>evec</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>ev</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>mean</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
compute the PCA of a matrix.
<p>
Compute the Principal Component Analysis (PCA) of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>source matrix </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>evec</em>&nbsp;</td><td>eigen vector computed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ev</em>&nbsp;</td><td>eigen value computed </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mean</em>&nbsp;</td><td>mean computed </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success to compute, -1 otherwise </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="c30a83b25ff3599f4b0082203dff0fac"></a><!-- doxytag: member="matrix.h::arMatrixPCA2" ref="c30a83b25ff3599f4b0082203dff0fac" args="(ARMat *input, ARMat *evec, ARVec *ev)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixPCA2           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>input</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>evec</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>ev</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
compute the PCA of a matrix.
<p>
Compute the Principal Component Analysis (PCA) of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>source matrix </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>evec</em>&nbsp;</td><td>result matrix </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ev</em>&nbsp;</td><td>egein value computed </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success to compute, -1 otherwise </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="929738025b539a0c1bbd2f395ad4d981"></a><!-- doxytag: member="matrix.h::arMatrixSelfInv" ref="929738025b539a0c1bbd2f395ad4d981" args="(ARMat *m)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixSelfInv           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
inverses a matrix.
<p>
Inverses a matrix and copy the result in the same structure. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>the matrix to inverse </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="d3d9712dd27f655902a8a3315e623d85"></a><!-- doxytag: member="matrix.h::arMatrixTrans" ref="d3d9712dd27f655902a8a3315e623d85" args="(ARMat *dest, ARMat *source)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixTrans           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>dest</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>source</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
transposes a matrix.
<p>
Transposes a matrix. The destination matrix must be allocated (the source matrix is unmodified). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination matrix of the copy </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source matrix </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (source and destination matrix have different size) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="8c8ecb09b4faa2e37ea4b0a48be9fa5f"></a><!-- doxytag: member="matrix.h::arMatrixUnit" ref="8c8ecb09b4faa2e37ea4b0a48be9fa5f" args="(ARMat *unit)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arMatrixUnit           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>unit</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Creates a unit matrix.
<p>
Transforms the source parameter matrix to a unit matrix (all values are modified). the unit matrix needs to be allocated. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>unit</em>&nbsp;</td><td>the matrix to transform </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="24a15cbbf606806e8a494f4943fb12fe"></a><!-- doxytag: member="matrix.h::arVecAlloc" ref="24a15cbbf606806e8a494f4943fb12fe" args="(int clm)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> * arVecAlloc           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">int&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>clm</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
creates a new vector.
<p>
Allocates and initializes new vector structure. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>clm</em>&nbsp;</td><td>dimension of vector </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the allocated vector, NULL if error (impossible allocation) </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="217351e5d447becfd775ba7d8bb72881"></a><!-- doxytag: member="matrix.h::arVecDisp" ref="217351e5d447becfd775ba7d8bb72881" args="(ARVec *v)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arVecDisp           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>v</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
display a vector.
<p>
Display element of a vector. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector to display </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="08c0d02dd8ddfb8a05d07f3fb80db2c4"></a><!-- doxytag: member="matrix.h::arVecFree" ref="08c0d02dd8ddfb8a05d07f3fb80db2c4" args="(ARVec *v)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arVecFree           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>v</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
delete a vector.
<p>
Delete a vector structure (deallocate used memory). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector to delete </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="2bac850b0a541eeca80cd83b81d2e44e"></a><!-- doxytag: member="matrix.h::arVecHousehold" ref="2bac850b0a541eeca80cd83b81d2e44e" args="(ARVec *x)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">double arVecHousehold           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>x</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
XXXBK.
<p>
XXXBK: for QR decomposition ?? (can't success to find french translation of this term) <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>XXXBK </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>XXXBK </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="c10c5bda849bb765f1371ee2267e3ea5"></a><!-- doxytag: member="matrix.h::arVecInnerproduct" ref="c10c5bda849bb765f1371ee2267e3ea5" args="(ARVec *x, ARVec *y)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">double arVecInnerproduct           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>x</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>y</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Computes the inner product of 2 vectors.
<p>
computes the inner product of the two argument vectors. the operation done is a=x.y (and a is return) <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>first vector source </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>second vector source </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>the computed innerproduct </dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="0411e88f92b95ecf0697c27f9bf9163d"></a><!-- doxytag: member="matrix.h::arVecTridiagonalize" ref="0411e88f92b95ecf0697c27f9bf9163d" args="(ARMat *a, ARVec *d, ARVec *e)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top">int arVecTridiagonalize           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>a</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td class="md"></td>
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
          <td class="mdname" nowrap> <em>e</em></td>
        </tr>
        <tr>
          <td class="md"></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
XXXBK.
<p>
XXXBK <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>XXXBK </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>XXXBK </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>XXXBK </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>XXXBK </dd></dl>
    </td>
  </tr>
</table>
       
        <small>Generated with <a href="http://www.doxygen.org/index.html">Doxygen</a><br>
        Copyright © 2004-2006. HIT Lab NZ. All Rights Reserved.</small>
        </body>
</html>