Subversion Repositories AndroidProjects

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
204 chris 1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2
<html>
3
        <head>
4
                <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
5
                <title>ARToolKit API Documentation</title>
6
                <link href="doxygen.css" rel="stylesheet" type="text/css">
7
        </head>
8
        <body>
9
<!-- Generated by Doxygen 1.4.6 -->
10
<div class="tabs">
11
  <ul>
12
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
13
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
14
    <li id="current"><a href="files.html"><span>Files</span></a></li>
15
  </ul></div>
16
<div class="tabs">
17
  <ul>
18
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
19
    <li><a href="globals.html"><span>Globals</span></a></li>
20
  </ul></div>
21
<h1>matrix.h File Reference</h1>ARToolkit algebric mathematics subroutines. <a href="#_details">More...</a>
22
<p>
23
<code>#include &lt;math.h&gt;</code><br>
24
<code>#include &lt;AR/config.h&gt;</code><br>
25
<table border="0" cellpadding="0" cellspacing="0">
26
<tr><td></td></tr>
27
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
28
<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>
29
 
30
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">matrix structure.  <a href="structARMat.html#_details">More...</a><br></td></tr>
31
<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>
32
 
33
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">vector structure.  <a href="structARVec.html#_details">More...</a><br></td></tr>
34
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
35
<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)" -->
36
#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>
37
 
38
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">macro function that give direct access to an element (0 origin) <br></td></tr>
39
<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)" -->
40
#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>
41
 
42
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">macro function that give direct access to an element (1 origin) <br></td></tr>
43
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
44
<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>
45
 
46
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates a new matrix.  <a href="#69c9a974dc5a3963148ebb2c4a80f969"></a><br></td></tr>
47
<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>
48
 
49
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">deletes a matrix.  <a href="#c4b7a714cce9fffda773d86363380454"></a><br></td></tr>
50
<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>
51
 
52
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">copy a matrix  <a href="#988e4c76394edccbf1e86005b97f725a"></a><br></td></tr>
53
<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>
54
 
55
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">dumps a new matrix  <a href="#ce5d8c6eb6524469fbc3770081658081"></a><br></td></tr>
56
<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>
57
 
58
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a unit matrix.  <a href="#8c8ecb09b4faa2e37ea4b0a48be9fa5f"></a><br></td></tr>
59
<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>
60
 
61
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Creates a unit matrix.  <a href="#df89adb96eae03112c40dd44455632ba"></a><br></td></tr>
62
<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>
63
 
64
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply two matrix.  <a href="#202bc2db43d563792c99e852ea0b7ba4"></a><br></td></tr>
65
<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>
66
 
67
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Multiply two matrix with memory allocation.  <a href="#8e99293b68c38ce8a8d1920884d69f73"></a><br></td></tr>
68
<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>
69
 
70
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">transposes a matrix.  <a href="#d3d9712dd27f655902a8a3315e623d85"></a><br></td></tr>
71
<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>
72
 
73
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">transposes a matrix with allocation.  <a href="#4e2bf8cd529487fb1ff4d0bbc52eee1e"></a><br></td></tr>
74
<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>
75
 
76
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverse a matrix.  <a href="#bebae87acb77ccf8cd0c5da106238a86"></a><br></td></tr>
77
<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>
78
 
79
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverses a matrix.  <a href="#929738025b539a0c1bbd2f395ad4d981"></a><br></td></tr>
80
<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>
81
 
82
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">inverses a matrix.  <a href="#fa96447f0f5d980c24357f31c635ab3e"></a><br></td></tr>
83
<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>
84
 
85
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute determinant of a matrix.  <a href="#d62b7d75215876f66f92fdafc468f476"></a><br></td></tr>
86
<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>
87
 
88
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute the PCA of a matrix.  <a href="#04d062f49b83d57ac0dec5e906dfcd32"></a><br></td></tr>
89
<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>
90
 
91
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compute the PCA of a matrix.  <a href="#c30a83b25ff3599f4b0082203dff0fac"></a><br></td></tr>
92
<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>
93
 
94
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display content of a matrix.  <a href="#60f36997579d355f6030f872faad84a2"></a><br></td></tr>
95
<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>
96
 
97
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">creates a new vector.  <a href="#24a15cbbf606806e8a494f4943fb12fe"></a><br></td></tr>
98
<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>
99
 
100
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete a vector.  <a href="#08c0d02dd8ddfb8a05d07f3fb80db2c4"></a><br></td></tr>
101
<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>
102
 
103
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">display a vector.  <a href="#217351e5d447becfd775ba7d8bb72881"></a><br></td></tr>
104
<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>
105
 
106
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XXXBK.  <a href="#2bac850b0a541eeca80cd83b81d2e44e"></a><br></td></tr>
107
<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>
108
 
109
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Computes the inner product of 2 vectors.  <a href="#c10c5bda849bb765f1371ee2267e3ea5"></a><br></td></tr>
110
<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>
111
 
112
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">XXXBK.  <a href="#0411e88f92b95ecf0697c27f9bf9163d"></a><br></td></tr>
113
</table>
114
<hr><a name="_details"></a><h2>Detailed Description</h2>
115
ARToolkit algebric mathematics subroutines.
116
<p>
117
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>
118
History :<p>
119
<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>
120
<dl compact><dt><b>Version:</b></dt><dd></dd></dl>
121
<dl compact><dt><b>Date:</b></dt><dd></dd></dl>
122
<hr><h2>Function Documentation</h2>
123
<a class="anchor" name="69c9a974dc5a3963148ebb2c4a80f969"></a><!-- doxytag: member="matrix.h::arMatrixAlloc" ref="69c9a974dc5a3963148ebb2c4a80f969" args="(int row, int clm)" --><p>
124
<table class="mdTable" cellpadding="2" cellspacing="0">
125
  <tr>
126
    <td class="mdRow">
127
      <table cellpadding="0" cellspacing="0" border="0">
128
        <tr>
129
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAlloc           </td>
130
          <td class="md" valign="top">(&nbsp;</td>
131
          <td class="md" nowrap valign="top">int&nbsp;</td>
132
          <td class="mdname" nowrap> <em>row</em>, </td>
133
        </tr>
134
        <tr>
135
          <td class="md" nowrap align="right"></td>
136
          <td class="md"></td>
137
          <td class="md" nowrap>int&nbsp;</td>
138
          <td class="mdname" nowrap> <em>clm</em></td>
139
        </tr>
140
        <tr>
141
          <td class="md"></td>
142
          <td class="md">)&nbsp;</td>
143
          <td class="md" colspan="2"></td>
144
        </tr>
145
      </table>
146
    </td>
147
  </tr>
148
</table>
149
<table cellspacing="5" cellpadding="0" border="0">
150
  <tr>
151
    <td>
152
      &nbsp;
153
    </td>
154
    <td>
155
 
156
<p>
157
creates a new matrix.
158
<p>
159
Allocate and initialize a new matrix structure. XXXBK initializing ?? to 0 m ?? <dl compact><dt><b>Parameters:</b></dt><dd>
160
  <table border="0" cellspacing="2" cellpadding="0">
161
    <tr><td valign="top"></td><td valign="top"><em>row</em>&nbsp;</td><td>number of line </td></tr>
162
    <tr><td valign="top"></td><td valign="top"><em>clm</em>&nbsp;</td><td>number of column </td></tr>
163
  </table>
164
</dl>
165
<dl compact><dt><b>Returns:</b></dt><dd>the matrix structure, NULL if allocation is impossible </dd></dl>
166
    </td>
167
  </tr>
168
</table>
169
<a class="anchor" name="ce5d8c6eb6524469fbc3770081658081"></a><!-- doxytag: member="matrix.h::arMatrixAllocDup" ref="ce5d8c6eb6524469fbc3770081658081" args="(ARMat *source)" --><p>
170
<table class="mdTable" cellpadding="2" cellspacing="0">
171
  <tr>
172
    <td class="mdRow">
173
      <table cellpadding="0" cellspacing="0" border="0">
174
        <tr>
175
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocDup           </td>
176
          <td class="md" valign="top">(&nbsp;</td>
177
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
178
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
179
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
180
          <td class="md" nowrap></td>
181
        </tr>
182
      </table>
183
    </td>
184
  </tr>
185
</table>
186
<table cellspacing="5" cellpadding="0" border="0">
187
  <tr>
188
    <td>
189
      &nbsp;
190
    </td>
191
    <td>
192
 
193
<p>
194
dumps a new matrix
195
<p>
196
Allocates and recopy the original source matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
197
  <table border="0" cellspacing="2" cellpadding="0">
198
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source matrix to copy </td></tr>
199
  </table>
200
</dl>
201
<dl compact><dt><b>Returns:</b></dt><dd>the matrix if success, NULL if error </dd></dl>
202
    </td>
203
  </tr>
204
</table>
205
<a class="anchor" name="fa96447f0f5d980c24357f31c635ab3e"></a><!-- doxytag: member="matrix.h::arMatrixAllocInv" ref="fa96447f0f5d980c24357f31c635ab3e" args="(ARMat *source)" --><p>
206
<table class="mdTable" cellpadding="2" cellspacing="0">
207
  <tr>
208
    <td class="mdRow">
209
      <table cellpadding="0" cellspacing="0" border="0">
210
        <tr>
211
          <td class="md" nowrap valign="top">int arMatrixAllocInv           </td>
212
          <td class="md" valign="top">(&nbsp;</td>
213
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
214
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
215
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
216
          <td class="md" nowrap></td>
217
        </tr>
218
      </table>
219
    </td>
220
  </tr>
221
</table>
222
<table cellspacing="5" cellpadding="0" border="0">
223
  <tr>
224
    <td>
225
      &nbsp;
226
    </td>
227
    <td>
228
 
229
<p>
230
inverses a matrix.
231
<p>
232
Inverses a matrix and copy the result in in a new allocated structure. <dl compact><dt><b>Parameters:</b></dt><dd>
233
  <table border="0" cellspacing="2" cellpadding="0">
234
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the matrix to inverse </td></tr>
235
  </table>
236
</dl>
237
<dl compact><dt><b>Returns:</b></dt><dd>the inversed matrix if success, NULL if error </dd></dl>
238
    </td>
239
  </tr>
240
</table>
241
<a class="anchor" name="8e99293b68c38ce8a8d1920884d69f73"></a><!-- doxytag: member="matrix.h::arMatrixAllocMul" ref="8e99293b68c38ce8a8d1920884d69f73" args="(ARMat *a, ARMat *b)" --><p>
242
<table class="mdTable" cellpadding="2" cellspacing="0">
243
  <tr>
244
    <td class="mdRow">
245
      <table cellpadding="0" cellspacing="0" border="0">
246
        <tr>
247
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocMul           </td>
248
          <td class="md" valign="top">(&nbsp;</td>
249
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
250
          <td class="mdname" nowrap> <em>a</em>, </td>
251
        </tr>
252
        <tr>
253
          <td class="md" nowrap align="right"></td>
254
          <td class="md"></td>
255
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
256
          <td class="mdname" nowrap> <em>b</em></td>
257
        </tr>
258
        <tr>
259
          <td class="md"></td>
260
          <td class="md">)&nbsp;</td>
261
          <td class="md" colspan="2"></td>
262
        </tr>
263
      </table>
264
    </td>
265
  </tr>
266
</table>
267
<table cellspacing="5" cellpadding="0" border="0">
268
  <tr>
269
    <td>
270
      &nbsp;
271
    </td>
272
    <td>
273
 
274
<p>
275
Multiply two matrix with memory allocation.
276
<p>
277
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>
278
<dl compact><dt><b>Parameters:</b></dt><dd>
279
  <table border="0" cellspacing="2" cellpadding="0">
280
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>first matrix </td></tr>
281
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>second matrix </td></tr>
282
  </table>
283
</dl>
284
<dl compact><dt><b>Returns:</b></dt><dd>the allocated matrix if success, NULL if error </dd></dl>
285
    </td>
286
  </tr>
287
</table>
288
<a class="anchor" name="4e2bf8cd529487fb1ff4d0bbc52eee1e"></a><!-- doxytag: member="matrix.h::arMatrixAllocTrans" ref="4e2bf8cd529487fb1ff4d0bbc52eee1e" args="(ARMat *source)" --><p>
289
<table class="mdTable" cellpadding="2" cellspacing="0">
290
  <tr>
291
    <td class="mdRow">
292
      <table cellpadding="0" cellspacing="0" border="0">
293
        <tr>
294
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> * arMatrixAllocTrans           </td>
295
          <td class="md" valign="top">(&nbsp;</td>
296
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
297
          <td class="mdname1" valign="top" nowrap> <em>source</em>          </td>
298
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
299
          <td class="md" nowrap></td>
300
        </tr>
301
      </table>
302
    </td>
303
  </tr>
304
</table>
305
<table cellspacing="5" cellpadding="0" border="0">
306
  <tr>
307
    <td>
308
      &nbsp;
309
    </td>
310
    <td>
311
 
312
<p>
313
transposes a matrix with allocation.
314
<p>
315
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>
316
  <table border="0" cellspacing="2" cellpadding="0">
317
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the matrix to transpose </td></tr>
318
  </table>
319
</dl>
320
<dl compact><dt><b>Returns:</b></dt><dd>the allocated matrix if success, NULL if error (creation or transposition impossible) </dd></dl>
321
    </td>
322
  </tr>
323
</table>
324
<a class="anchor" name="df89adb96eae03112c40dd44455632ba"></a><!-- doxytag: member="matrix.h::arMatrixAllocUnit" ref="df89adb96eae03112c40dd44455632ba" args="(int dim)" --><p>
325
<table class="mdTable" cellpadding="2" cellspacing="0">
326
  <tr>
327
    <td class="mdRow">
328
      <table cellpadding="0" cellspacing="0" border="0">
329
        <tr>
330
          <td class="md" nowrap valign="top">int arMatrixAllocUnit           </td>
331
          <td class="md" valign="top">(&nbsp;</td>
332
          <td class="md" nowrap valign="top">int&nbsp;</td>
333
          <td class="mdname1" valign="top" nowrap> <em>dim</em>          </td>
334
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
335
          <td class="md" nowrap></td>
336
        </tr>
337
      </table>
338
    </td>
339
  </tr>
340
</table>
341
<table cellspacing="5" cellpadding="0" border="0">
342
  <tr>
343
    <td>
344
      &nbsp;
345
    </td>
346
    <td>
347
 
348
<p>
349
Creates a unit matrix.
350
<p>
351
Allocates and initializes a matrix to a an identity matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
352
  <table border="0" cellspacing="2" cellpadding="0">
353
    <tr><td valign="top"></td><td valign="top"><em>dim</em>&nbsp;</td><td>dimensions of the unit matrix (square) </td></tr>
354
  </table>
355
</dl>
356
<dl compact><dt><b>Returns:</b></dt><dd>the matrix allocated if success, NULL if error </dd></dl>
357
    </td>
358
  </tr>
359
</table>
360
<a class="anchor" name="d62b7d75215876f66f92fdafc468f476"></a><!-- doxytag: member="matrix.h::arMatrixDet" ref="d62b7d75215876f66f92fdafc468f476" args="(ARMat *m)" --><p>
361
<table class="mdTable" cellpadding="2" cellspacing="0">
362
  <tr>
363
    <td class="mdRow">
364
      <table cellpadding="0" cellspacing="0" border="0">
365
        <tr>
366
          <td class="md" nowrap valign="top">int arMatrixDet           </td>
367
          <td class="md" valign="top">(&nbsp;</td>
368
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
369
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
370
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
371
          <td class="md" nowrap></td>
372
        </tr>
373
      </table>
374
    </td>
375
  </tr>
376
</table>
377
<table cellspacing="5" cellpadding="0" border="0">
378
  <tr>
379
    <td>
380
      &nbsp;
381
    </td>
382
    <td>
383
 
384
<p>
385
compute determinant of a matrix.
386
<p>
387
Compute the determinant of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
388
  <table border="0" cellspacing="2" cellpadding="0">
389
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>matrix source </td></tr>
390
  </table>
391
</dl>
392
<dl compact><dt><b>Returns:</b></dt><dd>the computed determinant </dd></dl>
393
    </td>
394
  </tr>
395
</table>
396
<a class="anchor" name="60f36997579d355f6030f872faad84a2"></a><!-- doxytag: member="matrix.h::arMatrixDisp" ref="60f36997579d355f6030f872faad84a2" args="(ARMat *m)" --><p>
397
<table class="mdTable" cellpadding="2" cellspacing="0">
398
  <tr>
399
    <td class="mdRow">
400
      <table cellpadding="0" cellspacing="0" border="0">
401
        <tr>
402
          <td class="md" nowrap valign="top">int arMatrixDisp           </td>
403
          <td class="md" valign="top">(&nbsp;</td>
404
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
405
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
406
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
407
          <td class="md" nowrap></td>
408
        </tr>
409
      </table>
410
    </td>
411
  </tr>
412
</table>
413
<table cellspacing="5" cellpadding="0" border="0">
414
  <tr>
415
    <td>
416
      &nbsp;
417
    </td>
418
    <td>
419
 
420
<p>
421
display content of a matrix.
422
<p>
423
Display in current console, the content of the matrix. The display is done line by line. <dl compact><dt><b>Parameters:</b></dt><dd>
424
  <table border="0" cellspacing="2" cellpadding="0">
425
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td></td></tr>
426
  </table>
427
</dl>
428
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
429
    </td>
430
  </tr>
431
</table>
432
<a class="anchor" name="988e4c76394edccbf1e86005b97f725a"></a><!-- doxytag: member="matrix.h::arMatrixDup" ref="988e4c76394edccbf1e86005b97f725a" args="(ARMat *dest, ARMat *source)" --><p>
433
<table class="mdTable" cellpadding="2" cellspacing="0">
434
  <tr>
435
    <td class="mdRow">
436
      <table cellpadding="0" cellspacing="0" border="0">
437
        <tr>
438
          <td class="md" nowrap valign="top">int arMatrixDup           </td>
439
          <td class="md" valign="top">(&nbsp;</td>
440
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
441
          <td class="mdname" nowrap> <em>dest</em>, </td>
442
        </tr>
443
        <tr>
444
          <td class="md" nowrap align="right"></td>
445
          <td class="md"></td>
446
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
447
          <td class="mdname" nowrap> <em>source</em></td>
448
        </tr>
449
        <tr>
450
          <td class="md"></td>
451
          <td class="md">)&nbsp;</td>
452
          <td class="md" colspan="2"></td>
453
        </tr>
454
      </table>
455
    </td>
456
  </tr>
457
</table>
458
<table cellspacing="5" cellpadding="0" border="0">
459
  <tr>
460
    <td>
461
      &nbsp;
462
    </td>
463
    <td>
464
 
465
<p>
466
copy a matrix
467
<p>
468
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>
469
  <table border="0" cellspacing="2" cellpadding="0">
470
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination matrix of the copy </td></tr>
471
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the original matrix source </td></tr>
472
  </table>
473
</dl>
474
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (matrix with different size) </dd></dl>
475
    </td>
476
  </tr>
477
</table>
478
<a class="anchor" name="c4b7a714cce9fffda773d86363380454"></a><!-- doxytag: member="matrix.h::arMatrixFree" ref="c4b7a714cce9fffda773d86363380454" args="(ARMat *m)" --><p>
479
<table class="mdTable" cellpadding="2" cellspacing="0">
480
  <tr>
481
    <td class="mdRow">
482
      <table cellpadding="0" cellspacing="0" border="0">
483
        <tr>
484
          <td class="md" nowrap valign="top">int arMatrixFree           </td>
485
          <td class="md" valign="top">(&nbsp;</td>
486
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
487
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
488
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
489
          <td class="md" nowrap></td>
490
        </tr>
491
      </table>
492
    </td>
493
  </tr>
494
</table>
495
<table cellspacing="5" cellpadding="0" border="0">
496
  <tr>
497
    <td>
498
      &nbsp;
499
    </td>
500
    <td>
501
 
502
<p>
503
deletes a matrix.
504
<p>
505
Delete a matrix structure (deallocate used memory). <dl compact><dt><b>Parameters:</b></dt><dd>
506
  <table border="0" cellspacing="2" cellpadding="0">
507
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>matrix to delete </td></tr>
508
  </table>
509
</dl>
510
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
511
    </td>
512
  </tr>
513
</table>
514
<a class="anchor" name="bebae87acb77ccf8cd0c5da106238a86"></a><!-- doxytag: member="matrix.h::arMatrixInv" ref="bebae87acb77ccf8cd0c5da106238a86" args="(ARMat *dest, ARMat *source)" --><p>
515
<table class="mdTable" cellpadding="2" cellspacing="0">
516
  <tr>
517
    <td class="mdRow">
518
      <table cellpadding="0" cellspacing="0" border="0">
519
        <tr>
520
          <td class="md" nowrap valign="top">int arMatrixInv           </td>
521
          <td class="md" valign="top">(&nbsp;</td>
522
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
523
          <td class="mdname" nowrap> <em>dest</em>, </td>
524
        </tr>
525
        <tr>
526
          <td class="md" nowrap align="right"></td>
527
          <td class="md"></td>
528
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
529
          <td class="mdname" nowrap> <em>source</em></td>
530
        </tr>
531
        <tr>
532
          <td class="md"></td>
533
          <td class="md">)&nbsp;</td>
534
          <td class="md" colspan="2"></td>
535
        </tr>
536
      </table>
537
    </td>
538
  </tr>
539
</table>
540
<table cellspacing="5" cellpadding="0" border="0">
541
  <tr>
542
    <td>
543
      &nbsp;
544
    </td>
545
    <td>
546
 
547
<p>
548
inverse a matrix.
549
<p>
550
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>
551
  <table border="0" cellspacing="2" cellpadding="0">
552
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>result matrix of the inverse operation </td></tr>
553
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>source matrix </td></tr>
554
  </table>
555
</dl>
556
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (not square matrix) </dd></dl>
557
    </td>
558
  </tr>
559
</table>
560
<a class="anchor" name="202bc2db43d563792c99e852ea0b7ba4"></a><!-- doxytag: member="matrix.h::arMatrixMul" ref="202bc2db43d563792c99e852ea0b7ba4" args="(ARMat *dest, ARMat *a, ARMat *b)" --><p>
561
<table class="mdTable" cellpadding="2" cellspacing="0">
562
  <tr>
563
    <td class="mdRow">
564
      <table cellpadding="0" cellspacing="0" border="0">
565
        <tr>
566
          <td class="md" nowrap valign="top">int arMatrixMul           </td>
567
          <td class="md" valign="top">(&nbsp;</td>
568
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
569
          <td class="mdname" nowrap> <em>dest</em>, </td>
570
        </tr>
571
        <tr>
572
          <td class="md" nowrap align="right"></td>
573
          <td class="md"></td>
574
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
575
          <td class="mdname" nowrap> <em>a</em>, </td>
576
        </tr>
577
        <tr>
578
          <td class="md" nowrap align="right"></td>
579
          <td class="md"></td>
580
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
581
          <td class="mdname" nowrap> <em>b</em></td>
582
        </tr>
583
        <tr>
584
          <td class="md"></td>
585
          <td class="md">)&nbsp;</td>
586
          <td class="md" colspan="2"></td>
587
        </tr>
588
      </table>
589
    </td>
590
  </tr>
591
</table>
592
<table cellspacing="5" cellpadding="0" border="0">
593
  <tr>
594
    <td>
595
      &nbsp;
596
    </td>
597
    <td>
598
 
599
<p>
600
Multiply two matrix.
601
<p>
602
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>
603
  <table border="0" cellspacing="2" cellpadding="0">
604
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>final matrix product </td></tr>
605
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>first matrix </td></tr>
606
    <tr><td valign="top"></td><td valign="top"><em>b</em>&nbsp;</td><td>second matrix </td></tr>
607
  </table>
608
</dl>
609
<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>
610
    </td>
611
  </tr>
612
</table>
613
<a class="anchor" name="04d062f49b83d57ac0dec5e906dfcd32"></a><!-- doxytag: member="matrix.h::arMatrixPCA" ref="04d062f49b83d57ac0dec5e906dfcd32" args="(ARMat *input, ARMat *evec, ARVec *ev, ARVec *mean)" --><p>
614
<table class="mdTable" cellpadding="2" cellspacing="0">
615
  <tr>
616
    <td class="mdRow">
617
      <table cellpadding="0" cellspacing="0" border="0">
618
        <tr>
619
          <td class="md" nowrap valign="top">int arMatrixPCA           </td>
620
          <td class="md" valign="top">(&nbsp;</td>
621
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
622
          <td class="mdname" nowrap> <em>input</em>, </td>
623
        </tr>
624
        <tr>
625
          <td class="md" nowrap align="right"></td>
626
          <td class="md"></td>
627
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
628
          <td class="mdname" nowrap> <em>evec</em>, </td>
629
        </tr>
630
        <tr>
631
          <td class="md" nowrap align="right"></td>
632
          <td class="md"></td>
633
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
634
          <td class="mdname" nowrap> <em>ev</em>, </td>
635
        </tr>
636
        <tr>
637
          <td class="md" nowrap align="right"></td>
638
          <td class="md"></td>
639
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
640
          <td class="mdname" nowrap> <em>mean</em></td>
641
        </tr>
642
        <tr>
643
          <td class="md"></td>
644
          <td class="md">)&nbsp;</td>
645
          <td class="md" colspan="2"></td>
646
        </tr>
647
      </table>
648
    </td>
649
  </tr>
650
</table>
651
<table cellspacing="5" cellpadding="0" border="0">
652
  <tr>
653
    <td>
654
      &nbsp;
655
    </td>
656
    <td>
657
 
658
<p>
659
compute the PCA of a matrix.
660
<p>
661
Compute the Principal Component Analysis (PCA) of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
662
  <table border="0" cellspacing="2" cellpadding="0">
663
    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>source matrix </td></tr>
664
    <tr><td valign="top"></td><td valign="top"><em>evec</em>&nbsp;</td><td>eigen vector computed </td></tr>
665
    <tr><td valign="top"></td><td valign="top"><em>ev</em>&nbsp;</td><td>eigen value computed </td></tr>
666
    <tr><td valign="top"></td><td valign="top"><em>mean</em>&nbsp;</td><td>mean computed </td></tr>
667
  </table>
668
</dl>
669
<dl compact><dt><b>Returns:</b></dt><dd>0 if success to compute, -1 otherwise </dd></dl>
670
    </td>
671
  </tr>
672
</table>
673
<a class="anchor" name="c30a83b25ff3599f4b0082203dff0fac"></a><!-- doxytag: member="matrix.h::arMatrixPCA2" ref="c30a83b25ff3599f4b0082203dff0fac" args="(ARMat *input, ARMat *evec, ARVec *ev)" --><p>
674
<table class="mdTable" cellpadding="2" cellspacing="0">
675
  <tr>
676
    <td class="mdRow">
677
      <table cellpadding="0" cellspacing="0" border="0">
678
        <tr>
679
          <td class="md" nowrap valign="top">int arMatrixPCA2           </td>
680
          <td class="md" valign="top">(&nbsp;</td>
681
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
682
          <td class="mdname" nowrap> <em>input</em>, </td>
683
        </tr>
684
        <tr>
685
          <td class="md" nowrap align="right"></td>
686
          <td class="md"></td>
687
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
688
          <td class="mdname" nowrap> <em>evec</em>, </td>
689
        </tr>
690
        <tr>
691
          <td class="md" nowrap align="right"></td>
692
          <td class="md"></td>
693
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
694
          <td class="mdname" nowrap> <em>ev</em></td>
695
        </tr>
696
        <tr>
697
          <td class="md"></td>
698
          <td class="md">)&nbsp;</td>
699
          <td class="md" colspan="2"></td>
700
        </tr>
701
      </table>
702
    </td>
703
  </tr>
704
</table>
705
<table cellspacing="5" cellpadding="0" border="0">
706
  <tr>
707
    <td>
708
      &nbsp;
709
    </td>
710
    <td>
711
 
712
<p>
713
compute the PCA of a matrix.
714
<p>
715
Compute the Principal Component Analysis (PCA) of a matrix. <dl compact><dt><b>Parameters:</b></dt><dd>
716
  <table border="0" cellspacing="2" cellpadding="0">
717
    <tr><td valign="top"></td><td valign="top"><em>input</em>&nbsp;</td><td>source matrix </td></tr>
718
    <tr><td valign="top"></td><td valign="top"><em>evec</em>&nbsp;</td><td>result matrix </td></tr>
719
    <tr><td valign="top"></td><td valign="top"><em>ev</em>&nbsp;</td><td>egein value computed </td></tr>
720
  </table>
721
</dl>
722
<dl compact><dt><b>Returns:</b></dt><dd>0 if success to compute, -1 otherwise </dd></dl>
723
    </td>
724
  </tr>
725
</table>
726
<a class="anchor" name="929738025b539a0c1bbd2f395ad4d981"></a><!-- doxytag: member="matrix.h::arMatrixSelfInv" ref="929738025b539a0c1bbd2f395ad4d981" args="(ARMat *m)" --><p>
727
<table class="mdTable" cellpadding="2" cellspacing="0">
728
  <tr>
729
    <td class="mdRow">
730
      <table cellpadding="0" cellspacing="0" border="0">
731
        <tr>
732
          <td class="md" nowrap valign="top">int arMatrixSelfInv           </td>
733
          <td class="md" valign="top">(&nbsp;</td>
734
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
735
          <td class="mdname1" valign="top" nowrap> <em>m</em>          </td>
736
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
737
          <td class="md" nowrap></td>
738
        </tr>
739
      </table>
740
    </td>
741
  </tr>
742
</table>
743
<table cellspacing="5" cellpadding="0" border="0">
744
  <tr>
745
    <td>
746
      &nbsp;
747
    </td>
748
    <td>
749
 
750
<p>
751
inverses a matrix.
752
<p>
753
Inverses a matrix and copy the result in the same structure. <dl compact><dt><b>Parameters:</b></dt><dd>
754
  <table border="0" cellspacing="2" cellpadding="0">
755
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>the matrix to inverse </td></tr>
756
  </table>
757
</dl>
758
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error </dd></dl>
759
    </td>
760
  </tr>
761
</table>
762
<a class="anchor" name="d3d9712dd27f655902a8a3315e623d85"></a><!-- doxytag: member="matrix.h::arMatrixTrans" ref="d3d9712dd27f655902a8a3315e623d85" args="(ARMat *dest, ARMat *source)" --><p>
763
<table class="mdTable" cellpadding="2" cellspacing="0">
764
  <tr>
765
    <td class="mdRow">
766
      <table cellpadding="0" cellspacing="0" border="0">
767
        <tr>
768
          <td class="md" nowrap valign="top">int arMatrixTrans           </td>
769
          <td class="md" valign="top">(&nbsp;</td>
770
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
771
          <td class="mdname" nowrap> <em>dest</em>, </td>
772
        </tr>
773
        <tr>
774
          <td class="md" nowrap align="right"></td>
775
          <td class="md"></td>
776
          <td class="md" nowrap><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
777
          <td class="mdname" nowrap> <em>source</em></td>
778
        </tr>
779
        <tr>
780
          <td class="md"></td>
781
          <td class="md">)&nbsp;</td>
782
          <td class="md" colspan="2"></td>
783
        </tr>
784
      </table>
785
    </td>
786
  </tr>
787
</table>
788
<table cellspacing="5" cellpadding="0" border="0">
789
  <tr>
790
    <td>
791
      &nbsp;
792
    </td>
793
    <td>
794
 
795
<p>
796
transposes a matrix.
797
<p>
798
Transposes a matrix. The destination matrix must be allocated (the source matrix is unmodified). <dl compact><dt><b>Parameters:</b></dt><dd>
799
  <table border="0" cellspacing="2" cellpadding="0">
800
    <tr><td valign="top"></td><td valign="top"><em>dest</em>&nbsp;</td><td>the destination matrix of the copy </td></tr>
801
    <tr><td valign="top"></td><td valign="top"><em>source</em>&nbsp;</td><td>the source matrix </td></tr>
802
  </table>
803
</dl>
804
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error (source and destination matrix have different size) </dd></dl>
805
    </td>
806
  </tr>
807
</table>
808
<a class="anchor" name="8c8ecb09b4faa2e37ea4b0a48be9fa5f"></a><!-- doxytag: member="matrix.h::arMatrixUnit" ref="8c8ecb09b4faa2e37ea4b0a48be9fa5f" args="(ARMat *unit)" --><p>
809
<table class="mdTable" cellpadding="2" cellspacing="0">
810
  <tr>
811
    <td class="mdRow">
812
      <table cellpadding="0" cellspacing="0" border="0">
813
        <tr>
814
          <td class="md" nowrap valign="top">int arMatrixUnit           </td>
815
          <td class="md" valign="top">(&nbsp;</td>
816
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
817
          <td class="mdname1" valign="top" nowrap> <em>unit</em>          </td>
818
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
819
          <td class="md" nowrap></td>
820
        </tr>
821
      </table>
822
    </td>
823
  </tr>
824
</table>
825
<table cellspacing="5" cellpadding="0" border="0">
826
  <tr>
827
    <td>
828
      &nbsp;
829
    </td>
830
    <td>
831
 
832
<p>
833
Creates a unit matrix.
834
<p>
835
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>
836
  <table border="0" cellspacing="2" cellpadding="0">
837
    <tr><td valign="top"></td><td valign="top"><em>unit</em>&nbsp;</td><td>the matrix to transform </td></tr>
838
  </table>
839
</dl>
840
<dl compact><dt><b>Returns:</b></dt><dd>0 if success, -1 if error </dd></dl>
841
    </td>
842
  </tr>
843
</table>
844
<a class="anchor" name="24a15cbbf606806e8a494f4943fb12fe"></a><!-- doxytag: member="matrix.h::arVecAlloc" ref="24a15cbbf606806e8a494f4943fb12fe" args="(int clm)" --><p>
845
<table class="mdTable" cellpadding="2" cellspacing="0">
846
  <tr>
847
    <td class="mdRow">
848
      <table cellpadding="0" cellspacing="0" border="0">
849
        <tr>
850
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> * arVecAlloc           </td>
851
          <td class="md" valign="top">(&nbsp;</td>
852
          <td class="md" nowrap valign="top">int&nbsp;</td>
853
          <td class="mdname1" valign="top" nowrap> <em>clm</em>          </td>
854
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
855
          <td class="md" nowrap></td>
856
        </tr>
857
      </table>
858
    </td>
859
  </tr>
860
</table>
861
<table cellspacing="5" cellpadding="0" border="0">
862
  <tr>
863
    <td>
864
      &nbsp;
865
    </td>
866
    <td>
867
 
868
<p>
869
creates a new vector.
870
<p>
871
Allocates and initializes new vector structure. <dl compact><dt><b>Parameters:</b></dt><dd>
872
  <table border="0" cellspacing="2" cellpadding="0">
873
    <tr><td valign="top"></td><td valign="top"><em>clm</em>&nbsp;</td><td>dimension of vector </td></tr>
874
  </table>
875
</dl>
876
<dl compact><dt><b>Returns:</b></dt><dd>the allocated vector, NULL if error (impossible allocation) </dd></dl>
877
    </td>
878
  </tr>
879
</table>
880
<a class="anchor" name="217351e5d447becfd775ba7d8bb72881"></a><!-- doxytag: member="matrix.h::arVecDisp" ref="217351e5d447becfd775ba7d8bb72881" args="(ARVec *v)" --><p>
881
<table class="mdTable" cellpadding="2" cellspacing="0">
882
  <tr>
883
    <td class="mdRow">
884
      <table cellpadding="0" cellspacing="0" border="0">
885
        <tr>
886
          <td class="md" nowrap valign="top">int arVecDisp           </td>
887
          <td class="md" valign="top">(&nbsp;</td>
888
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
889
          <td class="mdname1" valign="top" nowrap> <em>v</em>          </td>
890
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
891
          <td class="md" nowrap></td>
892
        </tr>
893
      </table>
894
    </td>
895
  </tr>
896
</table>
897
<table cellspacing="5" cellpadding="0" border="0">
898
  <tr>
899
    <td>
900
      &nbsp;
901
    </td>
902
    <td>
903
 
904
<p>
905
display a vector.
906
<p>
907
Display element of a vector. <dl compact><dt><b>Parameters:</b></dt><dd>
908
  <table border="0" cellspacing="2" cellpadding="0">
909
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector to display </td></tr>
910
  </table>
911
</dl>
912
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
913
    </td>
914
  </tr>
915
</table>
916
<a class="anchor" name="08c0d02dd8ddfb8a05d07f3fb80db2c4"></a><!-- doxytag: member="matrix.h::arVecFree" ref="08c0d02dd8ddfb8a05d07f3fb80db2c4" args="(ARVec *v)" --><p>
917
<table class="mdTable" cellpadding="2" cellspacing="0">
918
  <tr>
919
    <td class="mdRow">
920
      <table cellpadding="0" cellspacing="0" border="0">
921
        <tr>
922
          <td class="md" nowrap valign="top">int arVecFree           </td>
923
          <td class="md" valign="top">(&nbsp;</td>
924
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
925
          <td class="mdname1" valign="top" nowrap> <em>v</em>          </td>
926
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
927
          <td class="md" nowrap></td>
928
        </tr>
929
      </table>
930
    </td>
931
  </tr>
932
</table>
933
<table cellspacing="5" cellpadding="0" border="0">
934
  <tr>
935
    <td>
936
      &nbsp;
937
    </td>
938
    <td>
939
 
940
<p>
941
delete a vector.
942
<p>
943
Delete a vector structure (deallocate used memory). <dl compact><dt><b>Parameters:</b></dt><dd>
944
  <table border="0" cellspacing="2" cellpadding="0">
945
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector to delete </td></tr>
946
  </table>
947
</dl>
948
<dl compact><dt><b>Returns:</b></dt><dd>0 </dd></dl>
949
    </td>
950
  </tr>
951
</table>
952
<a class="anchor" name="2bac850b0a541eeca80cd83b81d2e44e"></a><!-- doxytag: member="matrix.h::arVecHousehold" ref="2bac850b0a541eeca80cd83b81d2e44e" args="(ARVec *x)" --><p>
953
<table class="mdTable" cellpadding="2" cellspacing="0">
954
  <tr>
955
    <td class="mdRow">
956
      <table cellpadding="0" cellspacing="0" border="0">
957
        <tr>
958
          <td class="md" nowrap valign="top">double arVecHousehold           </td>
959
          <td class="md" valign="top">(&nbsp;</td>
960
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
961
          <td class="mdname1" valign="top" nowrap> <em>x</em>          </td>
962
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
963
          <td class="md" nowrap></td>
964
        </tr>
965
      </table>
966
    </td>
967
  </tr>
968
</table>
969
<table cellspacing="5" cellpadding="0" border="0">
970
  <tr>
971
    <td>
972
      &nbsp;
973
    </td>
974
    <td>
975
 
976
<p>
977
XXXBK.
978
<p>
979
XXXBK: for QR decomposition ?? (can't success to find french translation of this term) <dl compact><dt><b>Parameters:</b></dt><dd>
980
  <table border="0" cellspacing="2" cellpadding="0">
981
    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>XXXBK </td></tr>
982
  </table>
983
</dl>
984
<dl compact><dt><b>Returns:</b></dt><dd>XXXBK </dd></dl>
985
    </td>
986
  </tr>
987
</table>
988
<a class="anchor" name="c10c5bda849bb765f1371ee2267e3ea5"></a><!-- doxytag: member="matrix.h::arVecInnerproduct" ref="c10c5bda849bb765f1371ee2267e3ea5" args="(ARVec *x, ARVec *y)" --><p>
989
<table class="mdTable" cellpadding="2" cellspacing="0">
990
  <tr>
991
    <td class="mdRow">
992
      <table cellpadding="0" cellspacing="0" border="0">
993
        <tr>
994
          <td class="md" nowrap valign="top">double arVecInnerproduct           </td>
995
          <td class="md" valign="top">(&nbsp;</td>
996
          <td class="md" nowrap valign="top"><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
997
          <td class="mdname" nowrap> <em>x</em>, </td>
998
        </tr>
999
        <tr>
1000
          <td class="md" nowrap align="right"></td>
1001
          <td class="md"></td>
1002
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
1003
          <td class="mdname" nowrap> <em>y</em></td>
1004
        </tr>
1005
        <tr>
1006
          <td class="md"></td>
1007
          <td class="md">)&nbsp;</td>
1008
          <td class="md" colspan="2"></td>
1009
        </tr>
1010
      </table>
1011
    </td>
1012
  </tr>
1013
</table>
1014
<table cellspacing="5" cellpadding="0" border="0">
1015
  <tr>
1016
    <td>
1017
      &nbsp;
1018
    </td>
1019
    <td>
1020
 
1021
<p>
1022
Computes the inner product of 2 vectors.
1023
<p>
1024
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>
1025
  <table border="0" cellspacing="2" cellpadding="0">
1026
    <tr><td valign="top"></td><td valign="top"><em>x</em>&nbsp;</td><td>first vector source </td></tr>
1027
    <tr><td valign="top"></td><td valign="top"><em>y</em>&nbsp;</td><td>second vector source </td></tr>
1028
  </table>
1029
</dl>
1030
<dl compact><dt><b>Returns:</b></dt><dd>the computed innerproduct </dd></dl>
1031
    </td>
1032
  </tr>
1033
</table>
1034
<a class="anchor" name="0411e88f92b95ecf0697c27f9bf9163d"></a><!-- doxytag: member="matrix.h::arVecTridiagonalize" ref="0411e88f92b95ecf0697c27f9bf9163d" args="(ARMat *a, ARVec *d, ARVec *e)" --><p>
1035
<table class="mdTable" cellpadding="2" cellspacing="0">
1036
  <tr>
1037
    <td class="mdRow">
1038
      <table cellpadding="0" cellspacing="0" border="0">
1039
        <tr>
1040
          <td class="md" nowrap valign="top">int arVecTridiagonalize           </td>
1041
          <td class="md" valign="top">(&nbsp;</td>
1042
          <td class="md" nowrap valign="top"><a class="el" href="structARMat.html">ARMat</a> *&nbsp;</td>
1043
          <td class="mdname" nowrap> <em>a</em>, </td>
1044
        </tr>
1045
        <tr>
1046
          <td class="md" nowrap align="right"></td>
1047
          <td class="md"></td>
1048
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
1049
          <td class="mdname" nowrap> <em>d</em>, </td>
1050
        </tr>
1051
        <tr>
1052
          <td class="md" nowrap align="right"></td>
1053
          <td class="md"></td>
1054
          <td class="md" nowrap><a class="el" href="structARVec.html">ARVec</a> *&nbsp;</td>
1055
          <td class="mdname" nowrap> <em>e</em></td>
1056
        </tr>
1057
        <tr>
1058
          <td class="md"></td>
1059
          <td class="md">)&nbsp;</td>
1060
          <td class="md" colspan="2"></td>
1061
        </tr>
1062
      </table>
1063
    </td>
1064
  </tr>
1065
</table>
1066
<table cellspacing="5" cellpadding="0" border="0">
1067
  <tr>
1068
    <td>
1069
      &nbsp;
1070
    </td>
1071
    <td>
1072
 
1073
<p>
1074
XXXBK.
1075
<p>
1076
XXXBK <dl compact><dt><b>Parameters:</b></dt><dd>
1077
  <table border="0" cellspacing="2" cellpadding="0">
1078
    <tr><td valign="top"></td><td valign="top"><em>a</em>&nbsp;</td><td>XXXBK </td></tr>
1079
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>XXXBK </td></tr>
1080
    <tr><td valign="top"></td><td valign="top"><em>e</em>&nbsp;</td><td>XXXBK </td></tr>
1081
  </table>
1082
</dl>
1083
<dl compact><dt><b>Returns:</b></dt><dd>XXXBK </dd></dl>
1084
    </td>
1085
  </tr>
1086
</table>
1087
 
1088
        <small>Generated with <a href="http://www.doxygen.org/index.html">Doxygen</a><br>
1089
        Copyright © 2004-2006. HIT Lab NZ. All Rights Reserved.</small>
1090
        </body>
1091
</html>