root/doc/html/elem__math_8h-source.html @ 354

Revision 353, 29.0 kB (checked in by smidl, 16 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: elem_math.h Source File</title>
4<link href="tabs.css" rel="stylesheet" type="text/css">
5<link href="doxygen.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.8 -->
8<script type="text/javascript">
9<!--
10function changeDisplayState (e){
11  var num=this.id.replace(/[^[0-9]/g,'');
12  var button=this.firstChild;
13  var sectionDiv=document.getElementById('dynsection'+num);
14  if (sectionDiv.style.display=='none'||sectionDiv.style.display==''){
15    sectionDiv.style.display='block';
16    button.src='open.gif';
17  }else{
18    sectionDiv.style.display='none';
19    button.src='closed.gif';
20  }
21}
22function initDynSections(){
23  var divs=document.getElementsByTagName('div');
24  var sectionCounter=1;
25  for(var i=0;i<divs.length-1;i++){
26    if(divs[i].className=='dynheader'&&divs[i+1].className=='dynsection'){
27      var header=divs[i];
28      var section=divs[i+1];
29      var button=header.firstChild;
30      if (button!='IMG'){
31        divs[i].insertBefore(document.createTextNode(' '),divs[i].firstChild);
32        button=document.createElement('img');
33        divs[i].insertBefore(button,divs[i].firstChild);
34      }
35      header.style.cursor='pointer';
36      header.onclick=changeDisplayState;
37      header.id='dynheader'+sectionCounter;
38      button.src='closed.gif';
39      section.id='dynsection'+sectionCounter;
40      section.style.display='none';
41      section.style.marginLeft='14px';
42      sectionCounter++;
43    }
44  }
45}
46window.onload = initDynSections;
47-->
48</script>
49<div class="navigation" id="top">
50  <div class="tabs">
51    <ul>
52      <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
53      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
54      <li><a href="modules.html"><span>Modules</span></a></li>
55      <li><a href="annotated.html"><span>Classes</span></a></li>
56      <li class="current"><a href="files.html"><span>Files</span></a></li>
57    </ul>
58  </div>
59  <div class="tabs">
60    <ul>
61      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
62      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
63    </ul>
64  </div>
65<h1>elem_math.h</h1><a href="elem__math_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
66<a name="l00029"></a>00029 <span class="preprocessor">#ifndef ELEM_MATH_H</span>
67<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define ELEM_MATH_H</span>
68<a name="l00031"></a>00031 <span class="preprocessor"></span>
69<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;<a class="code" href="itcompat_8h.html" title="IT++ compatibility types and functions.">itpp/base/itcompat.h</a>&gt;</span>
70<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="help__functions_8h.html" title="Help functions to make functions with vec and mat as arguments.">itpp/base/help_functions.h</a>&gt;</span>
71<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;<a class="code" href="converters_8h.html" title="Definitions of converters between different vector and matrix types.">itpp/base/converters.h</a>&gt;</span>
72<a name="l00035"></a>00035 <span class="preprocessor">#include &lt;cstdlib&gt;</span> <span class="comment">// required by std::abs()</span>
73<a name="l00036"></a>00036
74<a name="l00037"></a>00037
75<a name="l00038"></a>00038 <span class="keyword">namespace </span>itpp
76<a name="l00039"></a>00039 {
77<a name="l00040"></a>00040
78<a name="l00043"></a>00043
79<a name="l00044"></a>00044 <span class="comment">// -------------------- sqr function --------------------</span>
80<a name="l00045"></a>00045
81<a name="l00047"></a><a class="code" href="group__miscfunc.html#g53af461a647d4e8cbc9a79b82d12cf19">00047</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> (x * x); }
82<a name="l00049"></a><a class="code" href="group__miscfunc.html#g3224344034796c1c20af3e9f410998c8">00049</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keyword">const</span> std::complex&lt;double&gt;&amp; x)
83<a name="l00050"></a>00050 {
84<a name="l00051"></a>00051   <span class="keywordflow">return</span> (x.real() * x.real() + x.imag() * x.imag());
85<a name="l00052"></a>00052 }
86<a name="l00054"></a><a class="code" href="group__miscfunc.html#g6d7789c418de858fd332b39fbdfcd90d">00054</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>, x); }
87<a name="l00056"></a><a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38">00056</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>, x); }
88<a name="l00058"></a>00058 vec <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keyword">const</span> cvec &amp;x);
89<a name="l00060"></a>00060 mat <a class="code" href="group__miscfunc.html#gd0a08400c5087615cb59d95c3e05ba38" title="Square of elements.">sqr</a>(<span class="keyword">const</span> cmat &amp;x);
90<a name="l00061"></a>00061
91<a name="l00062"></a>00062
92<a name="l00063"></a>00063 <span class="comment">// -------------------- abs function --------------------</span>
93<a name="l00064"></a>00064
94<a name="l00066"></a><a class="code" href="group__miscfunc.html#g5a244fbc028479efd99375de8acf002e">00066</a> <span class="keyword">inline</span> vec <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(std::fabs, x); }
95<a name="l00068"></a><a class="code" href="group__miscfunc.html#g72438147a83a4cd635d0a2f87e4bfaba">00068</a> <span class="keyword">inline</span> mat <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(std::fabs, x); }
96<a name="l00070"></a><a class="code" href="group__miscfunc.html#g2f8990b663176a2bfa638c0f851b6368">00070</a> <span class="keyword">inline</span> ivec <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> ivec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">std::abs</a>, x); }
97<a name="l00072"></a><a class="code" href="group__miscfunc.html#g99a1c6c9aa84bc5c495f2d27163babf6">00072</a> <span class="keyword">inline</span> imat <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> imat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">std::abs</a>, x); }
98<a name="l00074"></a>00074 vec <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> cvec &amp;x);
99<a name="l00076"></a>00076 mat <a class="code" href="group__fixed.html#ge0a38d51b2bf99a0ba07f2f8885e6adc" title="Absolute value.">abs</a>(<span class="keyword">const</span> cmat &amp;x);
100<a name="l00077"></a>00077
101<a name="l00078"></a>00078
102<a name="l00079"></a>00079 <span class="comment">// -------------------- sign/sgn functions --------------------</span>
103<a name="l00080"></a>00080
104<a name="l00082"></a><a class="code" href="group__miscfunc.html#g3e61de2247605275a45d4a8b7216eb97">00082</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>(<span class="keywordtype">double</span> x)
105<a name="l00083"></a>00083 {
106<a name="l00084"></a>00084   <span class="keywordflow">return</span> (x == 0.0 ? 0.0 : (x &lt; 0.0 ? -1.0 : 1.0));
107<a name="l00085"></a>00085 }
108<a name="l00087"></a><a class="code" href="group__miscfunc.html#g1f7664f33dfdb9743d40bf2d3b2071fc">00087</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>, x); }
109<a name="l00089"></a><a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc">00089</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>, x); }
110<a name="l00090"></a>00090
111<a name="l00092"></a><a class="code" href="group__miscfunc.html#g42c0e8e31bbaf75415eb95c49b73cd21">00092</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#gd80b759c4a55ba8f679e3e3d3e44ad9c" title="Signum function.">sgn</a>(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> <a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>(x); }
112<a name="l00094"></a><a class="code" href="group__miscfunc.html#g97e0a4ced6c518876e137111b464ab66">00094</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#gd80b759c4a55ba8f679e3e3d3e44ad9c" title="Signum function.">sgn</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>, x); }
113<a name="l00096"></a><a class="code" href="group__miscfunc.html#gd80b759c4a55ba8f679e3e3d3e44ad9c">00096</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#gd80b759c4a55ba8f679e3e3d3e44ad9c" title="Signum function.">sgn</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g401fd66453aeaddc9dfca9fbe9dc40fc" title="Signum function.">sign</a>, x); }
114<a name="l00097"></a>00097
115<a name="l00099"></a><a class="code" href="group__miscfunc.html#gca744b04184579edc2327cfba8331e49">00099</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>(<span class="keywordtype">int</span> x)
116<a name="l00100"></a>00100 {
117<a name="l00101"></a>00101   <span class="keywordflow">return</span> (x == 0 ? 0 : (x &lt; 0 ? -1 : 1));
118<a name="l00102"></a>00102 }
119<a name="l00104"></a><a class="code" href="group__miscfunc.html#ga228c3a56411f8bbfed9d1b93669d352">00104</a> <span class="keyword">inline</span> ivec <a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>(<span class="keyword">const</span> ivec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>, x); }
120<a name="l00106"></a><a class="code" href="group__miscfunc.html#g8b693ee7cc283a7587e765b2c6c9421a">00106</a> <span class="keyword">inline</span> imat <a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>(<span class="keyword">const</span> imat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>, x); }
121<a name="l00107"></a>00107
122<a name="l00109"></a><a class="code" href="group__miscfunc.html#g2127a6ea8a746bd3b4ecb1923864e706">00109</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#g50ba13db25f4e42bb307ebe5d6abea72" title="Signum function.">sgn_i</a>(<span class="keywordtype">int</span> x) { <span class="keywordflow">return</span> <a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>(x); }
123<a name="l00111"></a><a class="code" href="group__miscfunc.html#gbeace0b21eda7f91277f31d1c0ed4303">00111</a> <span class="keyword">inline</span> ivec <a class="code" href="group__miscfunc.html#g50ba13db25f4e42bb307ebe5d6abea72" title="Signum function.">sgn_i</a>(<span class="keyword">const</span> ivec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>, x); }
124<a name="l00113"></a><a class="code" href="group__miscfunc.html#g50ba13db25f4e42bb307ebe5d6abea72">00113</a> <span class="keyword">inline</span> imat <a class="code" href="group__miscfunc.html#g50ba13db25f4e42bb307ebe5d6abea72" title="Signum function.">sgn_i</a>(<span class="keyword">const</span> imat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;int&gt;(<a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>, x); }
125<a name="l00114"></a>00114
126<a name="l00116"></a><a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab">00116</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#ga73c84f1a4c455e0ba530dc73d69a0ab" title="Signum function.">sign_i</a>(<span class="keywordtype">double</span> x)
127<a name="l00117"></a>00117 {
128<a name="l00118"></a>00118   <span class="keywordflow">return</span> (x == 0.0 ? 0 : (x &lt; 0.0 ? -1 : 1));
129<a name="l00119"></a>00119 }
130<a name="l00120"></a>00120
131<a name="l00121"></a>00121 <span class="comment">// -------------------- sqrt function --------------------</span>
132<a name="l00122"></a>00122
133<a name="l00124"></a><a class="code" href="group__miscfunc.html#gf559d29ca56ad3396a4284964b01a9b0">00124</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>, x); }
134<a name="l00126"></a><a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac">00126</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>, x); }
135<a name="l00127"></a>00127
136<a name="l00128"></a>00128
137<a name="l00129"></a>00129 <span class="comment">// -------------------- gamma function --------------------</span>
138<a name="l00130"></a>00130
139<a name="l00132"></a><a class="code" href="group__miscfunc.html#g41dc8745e32b331254f39ce3ce941461">00132</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#gf7e65712c6e83e029747b025cab6eba4" title="Deprecated gamma function for matrices. Will be changed to tgamma().">gamma</a>(<span class="keywordtype">double</span> x) { <span class="keywordflow">return</span> tgamma(x); }
140<a name="l00134"></a><a class="code" href="group__miscfunc.html#g8bb14f8b2b8d4c594065dac1bb096bf9">00134</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#gf7e65712c6e83e029747b025cab6eba4" title="Deprecated gamma function for matrices. Will be changed to tgamma().">gamma</a>(<span class="keyword">const</span> vec &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(tgamma, x); }
141<a name="l00136"></a><a class="code" href="group__miscfunc.html#gf7e65712c6e83e029747b025cab6eba4">00136</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#gf7e65712c6e83e029747b025cab6eba4" title="Deprecated gamma function for matrices. Will be changed to tgamma().">gamma</a>(<span class="keyword">const</span> mat &amp;x) { <span class="keywordflow">return</span> apply_function&lt;double&gt;(tgamma, x); }
142<a name="l00137"></a>00137
143<a name="l00138"></a>00138
144<a name="l00139"></a>00139 <span class="comment">// -------------------- rem function --------------------</span>
145<a name="l00140"></a>00140
146<a name="l00142"></a><a class="code" href="group__miscfunc.html#g5ffbe0ec26bdc52e7711fafa9632a8c9">00142</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>(<span class="keywordtype">double</span> x, <span class="keywordtype">double</span> y) { <span class="keywordflow">return</span> fmod(x, y); }
147<a name="l00144"></a><a class="code" href="group__miscfunc.html#g4a0f840267236c3f94d3b0b30fdddd17">00144</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>(<span class="keyword">const</span> vec &amp;x, <span class="keywordtype">double</span> y)
148<a name="l00145"></a>00145 {
149<a name="l00146"></a>00146   <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>, x, y);
150<a name="l00147"></a>00147 }
151<a name="l00149"></a><a class="code" href="group__miscfunc.html#gca8c2d4626eb80e5deb4a8a3ae94d2df">00149</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>(<span class="keywordtype">double</span> x, <span class="keyword">const</span> vec &amp;y)
152<a name="l00150"></a>00150 {
153<a name="l00151"></a>00151   <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>, x, y);
154<a name="l00152"></a>00152 }
155<a name="l00154"></a><a class="code" href="group__miscfunc.html#gbaf4f0972fa64defac305b4e21beb0eb">00154</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>(<span class="keyword">const</span> mat &amp;x, <span class="keywordtype">double</span> y)
156<a name="l00155"></a>00155 {
157<a name="l00156"></a>00156   <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>, x, y);
158<a name="l00157"></a>00157 }
159<a name="l00159"></a><a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa">00159</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>(<span class="keywordtype">double</span> x, <span class="keyword">const</span> mat &amp;y)
160<a name="l00160"></a>00160 {
161<a name="l00161"></a>00161   <span class="keywordflow">return</span> apply_function&lt;double&gt;(<a class="code" href="group__miscfunc.html#g2c726012179bce791250afed60d508aa" title="Elementwise reminder of the division x/y for double and mat.">rem</a>, x, y);
162<a name="l00162"></a>00162 }
163<a name="l00163"></a>00163
164<a name="l00164"></a>00164 <span class="comment">// -------------------- mod function --------------------</span>
165<a name="l00165"></a>00165
166<a name="l00167"></a><a class="code" href="group__miscfunc.html#g441f466a2b056fe5f2b05fcd894c472f">00167</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#g441f466a2b056fe5f2b05fcd894c472f" title="Calculates the modulus, i.e. the signed reminder after division.">mod</a>(<span class="keywordtype">int</span> k, <span class="keywordtype">int</span> n)
167<a name="l00168"></a>00168 {
168<a name="l00169"></a>00169   <span class="keywordflow">return</span> (n == 0) ? k : (k - n * <a class="code" href="group__convertfunc.html#gb5745fd45c164c8d1e062359d0bf2783" title="Round to nearest lower integer.">floor_i</a>(static_cast&lt;double&gt;(k) / n));
169<a name="l00170"></a>00170 }
170<a name="l00171"></a>00171
171<a name="l00172"></a>00172
172<a name="l00173"></a>00173 <span class="comment">// -------------------- factorial coefficient function --------------------</span>
173<a name="l00174"></a>00174
174<a name="l00176"></a>00176 <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#g8e8cad2fa721d436d05ec76bfb4a288f" title="Calculates factorial coefficient for index &amp;lt;= 170.">fact</a>(<span class="keywordtype">int</span> index);
175<a name="l00177"></a>00177
176<a name="l00178"></a>00178
177<a name="l00179"></a>00179 <span class="comment">// -------------------- binomial coefficient function --------------------</span>
178<a name="l00180"></a>00180
179<a name="l00182"></a>00182 <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#gdce2409aa6d8245ea5f27f59c742bc58" title="Compute the binomial coefficient &amp;quot;n over k&amp;quot;.">binom</a>(<span class="keywordtype">int</span> n, <span class="keywordtype">int</span> k);
180<a name="l00183"></a>00183
181<a name="l00185"></a>00185 <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#g2c6c5fe6803c19ef6c09afb07558112f" title="Compute the binomial coefficient &amp;quot;n over k&amp;quot;.">binom_i</a>(<span class="keywordtype">int</span> n, <span class="keywordtype">int</span> k);
182<a name="l00186"></a>00186
183<a name="l00188"></a>00188 <span class="keywordtype">double</span> <a class="code" href="group__miscfunc.html#g7dc1e862096ecf42e933dcaaf225b3d7" title="Compute the base 10 logarithm of the binomial coefficient &amp;quot;n over k&amp;quot;.">log_binom</a>(<span class="keywordtype">int</span> n, <span class="keywordtype">int</span> k);
184<a name="l00189"></a>00189
185<a name="l00190"></a>00190
186<a name="l00191"></a>00191 <span class="comment">// -------------------- greatest common divisor function --------------------</span>
187<a name="l00192"></a>00192
188<a name="l00200"></a>00200 <span class="keywordtype">int</span> <a class="code" href="group__miscfunc.html#gfe9fa69e2d3126c5566aa1198716f4f3" title="Compute the greatest common divisor (GCD) g of the elements a and b.">gcd</a>(<span class="keywordtype">int</span> a, <span class="keywordtype">int</span> b);
189<a name="l00201"></a>00201
190<a name="l00202"></a>00202
191<a name="l00203"></a>00203 <span class="comment">// -------------------- complex related functions --------------------</span>
192<a name="l00204"></a>00204
193<a name="l00206"></a>00206 vec <a class="code" href="group__fixed.html#g58e25b8186a28f9dfd4062c7ed22e358" title="Real part of complex value.">real</a>(<span class="keyword">const</span> cvec &amp;x);
194<a name="l00208"></a>00208 mat <a class="code" href="group__fixed.html#g58e25b8186a28f9dfd4062c7ed22e358" title="Real part of complex value.">real</a>(<span class="keyword">const</span> cmat &amp;x);
195<a name="l00210"></a>00210 vec <a class="code" href="group__fixed.html#gfaa4104621089388e7bfb218b02aaa77" title="Imaginary part of complex value.">imag</a>(<span class="keyword">const</span> cvec &amp;x);
196<a name="l00212"></a>00212 mat <a class="code" href="group__fixed.html#gfaa4104621089388e7bfb218b02aaa77" title="Imaginary part of complex value.">imag</a>(<span class="keyword">const</span> cmat &amp;x);
197<a name="l00213"></a>00213
198<a name="l00215"></a>00215 vec <a class="code" href="group__miscfunc.html#g8667915c4bc50cddf17193d8db63a75e" title="Argument (angle).">arg</a>(<span class="keyword">const</span> cvec &amp;x);
199<a name="l00217"></a>00217 mat <a class="code" href="group__miscfunc.html#g8667915c4bc50cddf17193d8db63a75e" title="Argument (angle).">arg</a>(<span class="keyword">const</span> cmat &amp;x);
200<a name="l00219"></a><a class="code" href="group__miscfunc.html#g73c55fd4bdb9c7196845d4e14151b16a">00219</a> <span class="keyword">inline</span> vec <a class="code" href="group__miscfunc.html#g7048bf874e72c1d95922adaedef34d8f" title="Angle.">angle</a>(<span class="keyword">const</span> cvec &amp;x) { <span class="keywordflow">return</span> <a class="code" href="group__miscfunc.html#g8667915c4bc50cddf17193d8db63a75e" title="Argument (angle).">arg</a>(x); }
201<a name="l00221"></a><a class="code" href="group__miscfunc.html#g7048bf874e72c1d95922adaedef34d8f">00221</a> <span class="keyword">inline</span> mat <a class="code" href="group__miscfunc.html#g7048bf874e72c1d95922adaedef34d8f" title="Angle.">angle</a>(<span class="keyword">const</span> cmat &amp;x) { <span class="keywordflow">return</span> <a class="code" href="group__miscfunc.html#g8667915c4bc50cddf17193d8db63a75e" title="Argument (angle).">arg</a>(x); }
202<a name="l00222"></a>00222
203<a name="l00223"></a>00223 <span class="comment">// Added due to a failure in MSVC++ .NET 2005, which crashes on this</span>
204<a name="l00224"></a>00224 <span class="comment">// code.</span>
205<a name="l00225"></a>00225 <span class="preprocessor">#ifndef _MSC_VER</span>
206<a name="l00227"></a><a class="code" href="group__miscfunc.html#ge55d0251e5ca63e07185d58b4880281c">00227</a> <span class="preprocessor">inline cvec conj(const cvec &amp;x)</span>
207<a name="l00228"></a>00228 <span class="preprocessor"></span>{
208<a name="l00229"></a>00229   <span class="keywordflow">return</span> apply_function&lt;std::complex&lt;double&gt; &gt;(<a class="code" href="group__fixed.html#g42c0e5345d109af3e0f6feee6ededfd4" title="Conjugate of complex value.">std::conj</a>, x);
209<a name="l00230"></a>00230 }
210<a name="l00232"></a><a class="code" href="group__miscfunc.html#g6e8d44e5bdfb75dd7434d843e6e4c9d5">00232</a> <span class="keyword">inline</span> cmat <a class="code" href="group__fixed.html#g42c0e5345d109af3e0f6feee6ededfd4" title="Conjugate of complex value.">conj</a>(<span class="keyword">const</span> cmat &amp;x)
211<a name="l00233"></a>00233 {
212<a name="l00234"></a>00234   <span class="keywordflow">return</span> apply_function&lt;std::complex&lt;double&gt; &gt;(<a class="code" href="group__fixed.html#g42c0e5345d109af3e0f6feee6ededfd4" title="Conjugate of complex value.">std::conj</a>, x);
213<a name="l00235"></a>00235 }
214<a name="l00236"></a>00236 <span class="preprocessor">#else</span>
215<a name="l00238"></a>00238 <span class="preprocessor">cvec conj(const cvec &amp;x);</span>
216<a name="l00239"></a>00239 <span class="preprocessor"></span>
217<a name="l00241"></a>00241 cmat <a class="code" href="group__fixed.html#g42c0e5345d109af3e0f6feee6ededfd4" title="Conjugate of complex value.">conj</a>(<span class="keyword">const</span> cmat &amp;x);
218<a name="l00242"></a>00242 <span class="preprocessor">#endif</span>
219<a name="l00243"></a>00243 <span class="preprocessor"></span>
220<a name="l00245"></a>00245
221<a name="l00246"></a>00246 } <span class="comment">// namespace itpp</span>
222<a name="l00247"></a>00247
223<a name="l00248"></a>00248 <span class="preprocessor">#endif // #ifndef ELEM_MATH_H</span>
224<a name="l00249"></a>00249 <span class="preprocessor"></span>
225<a name="l00250"></a>00250
226<a name="l00251"></a>00251
227<a name="l00252"></a>00252
228</pre></div></div>
229<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:11 2009 for mixpp by&nbsp;
230<a href="http://www.doxygen.org/index.html">
231<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
232</body>
233</html>
Note: See TracBrowser for help on using the browser.