<!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
Page
</span></a></li>
<li><a href="annotated.html"><span>Data
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
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
<math.h
></code><br>
<code>#include
<AR/config.h
></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
</td><td class="memItemRight" valign="bottom"><a class="el" href="structARMat.html">ARMat
</a></td></tr>
<tr><td class="mdescLeft"> </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
</td><td class="memItemRight" valign="bottom"><a class="el" href="structARVec.html">ARVec
</a></td></tr>
<tr><td class="mdescLeft"> </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
</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#7a935ae1197adde7e3476dbfbfc4f99e">ARELEM0
</a>(mat, r, c)
((mat)-
>m[(r)*((mat)-
>clm)+(c)])
</td></tr>
<tr><td class="mdescLeft"> </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
</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#f33714038d5eb3748816c2361af9d7b2">ARELEM1
</a>(mat, row, clm)
ARELEM0(mat,row-1,clm-1)
</td></tr>
<tr><td class="mdescLeft"> </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> *
</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"> </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
</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"> </td><td class="mdescRight">deletes a matrix.
<a href="#c4b7a714cce9fffda773d86363380454"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int
</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"> </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> *
</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"> </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
</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"> </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> *
</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#df89adb96eae03112c40dd44455632ba">arMatrixAllocUnit
</a> (int dim)
</td></tr>
<tr><td class="mdescLeft"> </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
</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"> </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> *
</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"> </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
</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"> </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> *
</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"> </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
</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"> </td><td class="mdescRight">inverse a matrix.
<a href="#bebae87acb77ccf8cd0c5da106238a86"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int
</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"> </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> *
</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"> </td><td class="mdescRight">inverses a matrix.
<a href="#fa96447f0f5d980c24357f31c635ab3e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double
</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"> </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
</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"> </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
</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"> </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
</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"> </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> *
</td><td class="memItemRight" valign="bottom"><a class="el" href="matrix_8h.html#24a15cbbf606806e8a494f4943fb12fe">arVecAlloc
</a> (int clm)
</td></tr>
<tr><td class="mdescLeft"> </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
</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"> </td><td class="mdescRight">delete a vector.
<a href="#08c0d02dd8ddfb8a05d07f3fb80db2c4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int
</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"> </td><td class="mdescRight">display a vector.
<a href="#217351e5d447becfd775ba7d8bb72881"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double
</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"> </td><td class="mdescRight">XXXBK.
<a href="#2bac850b0a541eeca80cd83b81d2e44e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">double
</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"> </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
</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"> </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">(
</td>
<td class="md" nowrap valign="top">int
</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
</td>
<td class="mdname" nowrap> <em>clm
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>number of line
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>clm
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>source
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>source
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</td>
<td class="mdname" nowrap> <em>b
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>first matrix
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>b
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>source
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top">int
</td>
<td class="mdname1" valign="top" nowrap> <em>dim
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>m
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>m
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</td>
<td class="mdname" nowrap> <em>source
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>the destination matrix of the copy
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>source
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>m
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</td>
<td class="mdname" nowrap> <em>source
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>result matrix of the inverse operation
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>source
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</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> *
</td>
<td class="mdname" nowrap> <em>b
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>final matrix product
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>a
</em> </td><td>first matrix
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>b
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</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> *
</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> *
</td>
<td class="mdname" nowrap> <em>mean
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>source matrix
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>evec
</em> </td><td>eigen vector computed
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>ev
</em> </td><td>eigen value computed
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>mean
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</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> *
</td>
<td class="mdname" nowrap> <em>ev
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>source matrix
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>evec
</em> </td><td>result matrix
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>ev
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>m
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</td>
<td class="mdname" nowrap> <em>source
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>the destination matrix of the copy
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>source
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>unit
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top">int
</td>
<td class="mdname1" valign="top" nowrap> <em>clm
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>v
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>v
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec
</a> *
</td>
<td class="mdname1" valign="top" nowrap> <em>x
</em> </td>
<td class="md" valign="top"> )
</td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec
</a> *
</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> *
</td>
<td class="mdname" nowrap> <em>y
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>first vector source
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>y
</em> </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">(
</td>
<td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat
</a> *
</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> *
</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> *
</td>
<td class="mdname" nowrap> <em>e
</em></td>
</tr>
<tr>
<td class="md"></td>
<td class="md">)
</td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
<tr>
<td>
</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> </td><td>XXXBK
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>d
</em> </td><td>XXXBK
</td></tr>
<tr><td valign="top"></td><td valign="top"><em>e
</em> </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>