root/doc/html/random_8h-source.html @ 353

Revision 353, 83.4 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: random.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>random.h</h1><a href="random_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 RANDOM_H</span>
67<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#define RANDOM_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="random__dsfmt_8h.html" title="C++ implementation of dSFMT random number generator.">itpp/base/random_dsfmt.h</a>&gt;</span>
70<a name="l00033"></a>00033 <span class="preprocessor">#include &lt;<a class="code" href="operators_8h.html" title="Definitions of operators for vectors and matricies of different types.">itpp/base/operators.h</a>&gt;</span>
71<a name="l00034"></a>00034
72<a name="l00035"></a>00035
73<a name="l00036"></a>00036 <span class="keyword">namespace </span>itpp
74<a name="l00037"></a>00037 {
75<a name="l00038"></a>00038
76<a name="l00040"></a>00040
77<a name="l00050"></a><a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4">00050</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">DSFMT_19937_RNG</a> <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a>;
78<a name="l00051"></a>00051
79<a name="l00054"></a>00054
80<a name="l00056"></a>00056 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2dee3c934eeb7a720cb72316fd959c12" title="Set the seed of the Global Random Number Generator to the same as last time.">RNG_reset</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seed);
81<a name="l00058"></a>00058 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2dee3c934eeb7a720cb72316fd959c12" title="Set the seed of the Global Random Number Generator to the same as last time.">RNG_reset</a>();
82<a name="l00060"></a>00060 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gdf5dd6e879881b651896c213e6efd3ba" title="Set a random seed for the Global Random Number Generator.">RNG_randomize</a>();
83<a name="l00062"></a>00062 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g3bf0d34015b9f7de0233543518527571" title="Save the current state of the generator in a vector.">RNG_get_state</a>(ivec &amp;state);
84<a name="l00064"></a>00064 <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g461aec689ec83188592784d97a2b4944" title="Resume the state of the generator from previously saved vector.">RNG_set_state</a>(<span class="keyword">const</span> ivec &amp;state);
85<a name="l00066"></a>00066
86<a name="l00071"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html">00071</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a>
87<a name="l00072"></a>00072 {
88<a name="l00073"></a>00073 <span class="keyword">public</span>:
89<a name="l00075"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#cf2501213ceb10bc92bc694b63196189">00075</a>   <a class="code" href="classitpp_1_1Bernoulli__RNG.html#cf2501213ceb10bc92bc694b63196189" title="Binary source with probability prob for a 1.">Bernoulli_RNG</a>(<span class="keywordtype">double</span> prob) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9" title="set the probability">setup</a>(prob); }
90<a name="l00077"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#17e3d41e1796eab6270bddbca5ea98dc">00077</a>   <a class="code" href="classitpp_1_1Bernoulli__RNG.html#17e3d41e1796eab6270bddbca5ea98dc" title="Binary source with probability prob for a 1.">Bernoulli_RNG</a>() { p = 0.5; }
91<a name="l00079"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9">00079</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#56a09d28ad530f58f00450b23bf643c9" title="set the probability">setup</a>(<span class="keywordtype">double</span> prob) {
92<a name="l00080"></a>00080     <a class="code" href="group__errorhandlingfunc.html#gd5c34b291e5018534fd2344486e2b5a1" title="Abort if t is not true.">it_assert</a>(prob &gt;= 0.0 &amp;&amp; prob &lt;= 1.0, <span class="stringliteral">"The Bernoulli source probability "</span>
93<a name="l00081"></a>00081               <span class="stringliteral">"must be between 0 and 1"</span>);
94<a name="l00082"></a>00082     p = prob;
95<a name="l00083"></a>00083   }
96<a name="l00085"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#970707ebcdade6775717be16b2160829">00085</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#970707ebcdade6775717be16b2160829" title="return the probability">get_setup</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> p; }
97<a name="l00087"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#bb6831137cc5c71d8d9f5aebf9c85fe2">00087</a>   <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#bb6831137cc5c71d8d9f5aebf9c85fe2" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); }
98<a name="l00089"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#75ada9c6a1c1d3c5bc6faa84261a33ca">00089</a>   bvec <a class="code" href="classitpp_1_1Bernoulli__RNG.html#75ada9c6a1c1d3c5bc6faa84261a33ca" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) { bvec temp(n); <a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(n, temp); <span class="keywordflow">return</span> temp; }
99<a name="l00091"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#0c55314d2779f6273da032f933ef2e21">00091</a>   <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#0c55314d2779f6273da032f933ef2e21" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) { <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> temp(h, w); <a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(h, w, temp); <span class="keywordflow">return</span> temp; }
100<a name="l00093"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b">00093</a>   <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>() { <span class="keywordflow">return</span> RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>() &lt; p ? <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a>(1) : bin(0); }
101<a name="l00095"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8">00095</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, bvec &amp;out) {
102<a name="l00096"></a>00096     out.set_size(size, <span class="keyword">false</span>);
103<a name="l00097"></a>00097     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) out(i) = <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>();
104<a name="l00098"></a>00098   }
105<a name="l00100"></a><a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d">00100</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> &amp;out) {
106<a name="l00101"></a>00101     out.set_size(rows, cols, <span class="keyword">false</span>);
107<a name="l00102"></a>00102     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>();
108<a name="l00103"></a>00103   }
109<a name="l00104"></a>00104 <span class="keyword">protected</span>:
110<a name="l00105"></a>00105 <span class="keyword">private</span>:
111<a name="l00107"></a>00107   <span class="keywordtype">double</span> p;
112<a name="l00109"></a>00109   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
113<a name="l00110"></a>00110 };
114<a name="l00111"></a>00111
115<a name="l00129"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html">00129</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a>
116<a name="l00130"></a>00130 {
117<a name="l00131"></a>00131 <span class="keyword">public</span>:
118<a name="l00133"></a>00133   <a class="code" href="classitpp_1_1I__Uniform__RNG.html#9e27914cf212a099adf42ba2c4878e04" title="constructor. Sets min and max values.">I_Uniform_RNG</a>(<span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a> = 0, <span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a> = 1);
119<a name="l00135"></a>00135   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(<span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a>, <span class="keywordtype">int</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a>);
120<a name="l00137"></a>00137   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#394af0535af0c407e3d9b98d2bbce87b" title="get the parameters">get_setup</a>(<span class="keywordtype">int</span> &amp;min, <span class="keywordtype">int</span> &amp;max) <span class="keyword">const</span>;
121<a name="l00139"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649">00139</a>   <span class="keywordtype">int</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d" title="Return a single value from this random generator.">sample</a>(); }
122<a name="l00141"></a>00141   ivec <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
123<a name="l00143"></a>00143   imat <a class="code" href="classitpp_1_1I__Uniform__RNG.html#eb2a8e24ae009fcad5a41d5855589649" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
124<a name="l00145"></a><a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d">00145</a>   <span class="keywordtype">int</span> <a class="code" href="classitpp_1_1I__Uniform__RNG.html#d75b0138f1e18d45575754f8e9b74b2d" title="Return a single value from this random generator.">sample</a>() {
125<a name="l00146"></a>00146     <span class="keywordflow">return</span> <a class="code" href="group__convertfunc.html#gb5745fd45c164c8d1e062359d0bf2783" title="Round to nearest lower integer.">floor_i</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>() * (hi - lo + 1)) + lo;
126<a name="l00147"></a>00147   }
127<a name="l00148"></a>00148 <span class="keyword">private</span>:
128<a name="l00150"></a>00150   <span class="keywordtype">int</span> lo;
129<a name="l00152"></a>00152   <span class="keywordtype">int</span> hi;
130<a name="l00154"></a>00154   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
131<a name="l00155"></a>00155 };
132<a name="l00156"></a>00156
133<a name="l00161"></a><a class="code" href="classitpp_1_1Uniform__RNG.html">00161</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a>
134<a name="l00162"></a>00162 {
135<a name="l00163"></a>00163 <span class="keyword">public</span>:
136<a name="l00165"></a>00165   <a class="code" href="classitpp_1_1Uniform__RNG.html#301be8e09a13951f9c2f68c44af3810f" title="Constructor. Set min, max and seed.">Uniform_RNG</a>(<span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a> = 0, <span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a> = 1.0);
137<a name="l00167"></a>00167   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#315f0f487525c18cff6c02c339d591e7" title="set min and max">setup</a>(<span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g27dde5be5aac902c0de838b4b872cd2f" title="ADD DOCUMENTATION HERE.">min</a>, <span class="keywordtype">double</span> <a class="code" href="group__protocol.html#g3e4e78a5230c444344a135c661163ef2" title="ADD DOCUMENTATION HERE.">max</a>);
138<a name="l00169"></a>00169   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#0ed2b60584685b0c4567c10be41fe2ea" title="get parameters">get_setup</a>(<span class="keywordtype">double</span> &amp;min, <span class="keywordtype">double</span> &amp;max) <span class="keyword">const</span>;
139<a name="l00171"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#f21d969e99485aeeeb653a3f4d1d4a54">00171</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#f21d969e99485aeeeb653a3f4d1d4a54" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> (<a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>() * (hi_bound - lo_bound) + lo_bound); }
140<a name="l00173"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#327eeba30a40a750edcc7ce83b92df9d">00173</a>   vec <a class="code" href="classitpp_1_1Uniform__RNG.html#327eeba30a40a750edcc7ce83b92df9d" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) {
141<a name="l00174"></a>00174     vec temp(n);
142<a name="l00175"></a>00175     <a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(n, temp);
143<a name="l00176"></a>00176     temp *= hi_bound - lo_bound;
144<a name="l00177"></a>00177     temp += lo_bound;
145<a name="l00178"></a>00178     <span class="keywordflow">return</span> temp;
146<a name="l00179"></a>00179   }
147<a name="l00181"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#845b0e4a3b1511d24de370752a3cf90f">00181</a>   mat <a class="code" href="classitpp_1_1Uniform__RNG.html#845b0e4a3b1511d24de370752a3cf90f" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) {
148<a name="l00182"></a>00182     mat temp(h, w);
149<a name="l00183"></a>00183     <a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(h, w, temp);
150<a name="l00184"></a>00184     temp *= hi_bound - lo_bound;
151<a name="l00185"></a>00185     temp += lo_bound;
152<a name="l00186"></a>00186     <span class="keywordflow">return</span> temp;
153<a name="l00187"></a>00187   }
154<a name="l00189"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057">00189</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>() {  <span class="keywordflow">return</span> RNG.<a class="code" href="classitpp_1_1DSFMT.html#8ff79b50d0b3ae41bf2e8d4d2fc06099" title="Generate uniform [0, 1) double pseudorandom number.">genrand_close_open</a>(); }
155<a name="l00191"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7">00191</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &amp;out) {
156<a name="l00192"></a>00192     out.set_size(size, <span class="keyword">false</span>);
157<a name="l00193"></a>00193     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) out(i) = <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>();
158<a name="l00194"></a>00194   }
159<a name="l00196"></a><a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4">00196</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &amp;out) {
160<a name="l00197"></a>00197     out.set_size(rows, cols, <span class="keyword">false</span>);
161<a name="l00198"></a>00198     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>();
162<a name="l00199"></a>00199   }
163<a name="l00200"></a>00200 <span class="keyword">protected</span>:
164<a name="l00201"></a>00201 <span class="keyword">private</span>:
165<a name="l00203"></a>00203   <span class="keywordtype">double</span> lo_bound, hi_bound;
166<a name="l00205"></a>00205   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
167<a name="l00206"></a>00206 };
168<a name="l00207"></a>00207
169<a name="l00212"></a><a class="code" href="classitpp_1_1Exponential__RNG.html">00212</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Exponential__RNG.html" title="Exponential distribution.">Exponential_RNG</a>
170<a name="l00213"></a>00213 {
171<a name="l00214"></a>00214 <span class="keyword">public</span>:
172<a name="l00216"></a>00216   <a class="code" href="classitpp_1_1Exponential__RNG.html#9c6696d92e75aa69937b566d888555aa" title="constructor. Set lambda.">Exponential_RNG</a>(<span class="keywordtype">double</span> lambda = 1.0);
173<a name="l00218"></a><a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe">00218</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe" title="Set lambda.">setup</a>(<span class="keywordtype">double</span> lambda) { l = lambda; }
174<a name="l00220"></a>00220   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#390c91e3568fa1b4ddf46eb9adb37ac4" title="get lambda">get_setup</a>() <span class="keyword">const</span>;
175<a name="l00222"></a><a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea">00222</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); }
176<a name="l00224"></a>00224   vec <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
177<a name="l00226"></a>00226   mat <a class="code" href="classitpp_1_1Exponential__RNG.html#a0340b9f523694ffc0cb1e44623fceea" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
178<a name="l00227"></a>00227 <span class="keyword">private</span>:
179<a name="l00228"></a>00228   <span class="keywordtype">double</span> sample() { <span class="keywordflow">return</span> (-<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>()) / l); }
180<a name="l00229"></a>00229   <span class="keywordtype">double</span> l;
181<a name="l00230"></a>00230   <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG;
182<a name="l00231"></a>00231 };
183<a name="l00232"></a>00232
184<a name="l00247"></a><a class="code" href="classitpp_1_1Normal__RNG.html">00247</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a>
185<a name="l00248"></a>00248 {
186<a name="l00249"></a>00249 <span class="keyword">public</span>:
187<a name="l00251"></a><a class="code" href="classitpp_1_1Normal__RNG.html#dd55ffa72d3f5eb0995ab54894e08c8d">00251</a>   <a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f" title="Constructor. Set mean and variance.">Normal_RNG</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>):
188<a name="l00252"></a>00252       mean(meanval), sigma(std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(variance)) {}
189<a name="l00254"></a><a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f">00254</a>   <a class="code" href="classitpp_1_1Normal__RNG.html#a64c4c84526ad74d6ecde287149dd63f" title="Constructor. Set mean and variance.">Normal_RNG</a>(): mean(0.0), sigma(1.0) {}
190<a name="l00256"></a><a class="code" href="classitpp_1_1Normal__RNG.html#9c50b4c9b0bb07c69c9fbf16b9f01521">00256</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#9c50b4c9b0bb07c69c9fbf16b9f01521" title="Set mean, and variance.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>)
191<a name="l00257"></a>00257   { mean = meanval; sigma = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(variance); }
192<a name="l00259"></a>00259   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#93a1030543e425b82862c23467cb360a" title="Get mean and variance.">get_setup</a>(<span class="keywordtype">double</span> &amp;meanval, <span class="keywordtype">double</span> &amp;<a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) <span class="keyword">const</span>;
193<a name="l00261"></a><a class="code" href="classitpp_1_1Normal__RNG.html#98cb5f1d64fe9c1bdc4e97b136d6a8c3">00261</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Normal__RNG.html#98cb5f1d64fe9c1bdc4e97b136d6a8c3" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> (sigma*<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() + mean); }
194<a name="l00263"></a><a class="code" href="classitpp_1_1Normal__RNG.html#80d83d4d528cb3b4b788b7b479181a45">00263</a>   vec <a class="code" href="classitpp_1_1Normal__RNG.html#80d83d4d528cb3b4b788b7b479181a45" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) {
195<a name="l00264"></a>00264     vec temp(n);
196<a name="l00265"></a>00265     <a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(n, temp);
197<a name="l00266"></a>00266     temp *= sigma;
198<a name="l00267"></a>00267     temp += mean;
199<a name="l00268"></a>00268     <span class="keywordflow">return</span> temp;
200<a name="l00269"></a>00269   }
201<a name="l00271"></a><a class="code" href="classitpp_1_1Normal__RNG.html#6fe784c0dc8ccb689dd0ba8c4fa66dd2">00271</a>   mat <a class="code" href="classitpp_1_1Normal__RNG.html#6fe784c0dc8ccb689dd0ba8c4fa66dd2" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) {
202<a name="l00272"></a>00272     mat temp(h, w);
203<a name="l00273"></a>00273     <a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(h, w, temp);
204<a name="l00274"></a>00274     temp *= sigma;
205<a name="l00275"></a>00275     temp += mean;
206<a name="l00276"></a>00276     <span class="keywordflow">return</span> temp;
207<a name="l00277"></a>00277   }
208<a name="l00279"></a>00279   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
209<a name="l00280"></a>00280
210<a name="l00282"></a><a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8">00282</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &amp;out) {
211<a name="l00283"></a>00283     out.set_size(size, <span class="keyword">false</span>);
212<a name="l00284"></a>00284     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) out(i) = <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
213<a name="l00285"></a>00285   }
214<a name="l00286"></a>00286
215<a name="l00288"></a><a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd">00288</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &amp;out) {
216<a name="l00289"></a>00289     out.set_size(rows, cols, <span class="keyword">false</span>);
217<a name="l00290"></a>00290     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
218<a name="l00291"></a>00291   }
219<a name="l00292"></a>00292 <span class="keyword">private</span>:
220<a name="l00293"></a>00293   <span class="keywordtype">double</span> mean, sigma;
221<a name="l00294"></a>00294   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> ytab[128];
222<a name="l00295"></a>00295   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ktab[128];
223<a name="l00296"></a>00296   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> wtab[128];
224<a name="l00297"></a>00297   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">double</span> PARAM_R;
225<a name="l00298"></a>00298   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
226<a name="l00299"></a>00299 };
227<a name="l00300"></a>00300
228<a name="l00317"></a><a class="code" href="classitpp_1_1Gamma__RNG.html">00317</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Gamma__RNG.html" title="Gamma distributionGenerate samples from Gamma(alpha,beta) density, according to the...">Gamma_RNG</a>
229<a name="l00318"></a>00318 {
230<a name="l00319"></a>00319 <span class="keyword">public</span>:
231<a name="l00321"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#e132860f825f427d63652edd02c25b54">00321</a>   <a class="code" href="classitpp_1_1Gamma__RNG.html#e132860f825f427d63652edd02c25b54" title="Constructor, which sets alpha (a) and beta (b).">Gamma_RNG</a>(<span class="keywordtype">double</span> a = 1.0, <span class="keywordtype">double</span> b = 1.0): alpha(a), beta(b) {}
232<a name="l00323"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#cced56e9bb421619b7ff32fbf794d501">00323</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#cced56e9bb421619b7ff32fbf794d501" title="Set alpha and beta.">setup</a>(<span class="keywordtype">double</span> a, <span class="keywordtype">double</span> b) { alpha = a; beta = b; }
233<a name="l00325"></a><a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e">00325</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#d79da7d042746e5aeb1a5b03976dda75" title="Get a sample.">sample</a>(); }
234<a name="l00327"></a>00327   vec <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
235<a name="l00329"></a>00329   mat <a class="code" href="classitpp_1_1Gamma__RNG.html#98e2e65456bca33fca602b2bd607235e" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> r, <span class="keywordtype">int</span> c);
236<a name="l00331"></a>00331   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Gamma__RNG.html#d79da7d042746e5aeb1a5b03976dda75" title="Get a sample.">sample</a>();
237<a name="l00332"></a>00332 <span class="keyword">private</span>:
238<a name="l00333"></a>00333   <span class="keywordtype">double</span> alpha;
239<a name="l00334"></a>00334   <span class="keywordtype">double</span> beta;
240<a name="l00335"></a>00335   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
241<a name="l00336"></a>00336   <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> NRNG;
242<a name="l00337"></a>00337 };
243<a name="l00338"></a>00338
244<a name="l00343"></a><a class="code" href="classitpp_1_1Laplace__RNG.html">00343</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Laplace__RNG.html" title="Laplacian distribution.">Laplace_RNG</a>
245<a name="l00344"></a>00344 {
246<a name="l00345"></a>00345 <span class="keyword">public</span>:
247<a name="l00347"></a>00347   <a class="code" href="classitpp_1_1Laplace__RNG.html#6b9a099e102cb2b393cc6a70cc9cd470" title="Constructor. Set mean and variance.">Laplace_RNG</a>(<span class="keywordtype">double</span> meanval = 0.0, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a> = 1.0);
248<a name="l00349"></a>00349   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#82efd88f28d7c0a6e4ff926700df3872" title="Set mean and variance.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>);
249<a name="l00351"></a>00351   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#e6bf822f14dd184a0d9f9ec184c9db26" title="Get mean and variance.">get_setup</a>(<span class="keywordtype">double</span> &amp;meanval, <span class="keywordtype">double</span> &amp;variance) <span class="keyword">const</span>;
250<a name="l00353"></a><a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f">00353</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db" title="Returns a single sample.">sample</a>(); }
251<a name="l00355"></a>00355   vec <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
252<a name="l00357"></a>00357   mat <a class="code" href="classitpp_1_1Laplace__RNG.html#bee727a6f6a4a4b7f1a9288e610bca4f" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
253<a name="l00359"></a><a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db">00359</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Laplace__RNG.html#d128bb52144672d675b06e26e9a488db" title="Returns a single sample.">sample</a>() {
254<a name="l00360"></a>00360     <span class="keywordtype">double</span> u = RNG.<a class="code" href="classitpp_1_1DSFMT.html#186d6072f3c58313d28faa35f41b376f" title="Generate uniform (0, 1) double pseudorandom number.">genrand_open_open</a>();
255<a name="l00361"></a>00361     <span class="keywordtype">double</span> l = sqrt_12var;
256<a name="l00362"></a>00362     <span class="keywordflow">if</span> (u &lt; 0.5)
257<a name="l00363"></a>00363       l *= <a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(2.0 * u);
258<a name="l00364"></a>00364     <span class="keywordflow">else</span>
259<a name="l00365"></a>00365       l *= -<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(2.0 * (1 - u));
260<a name="l00366"></a>00366     <span class="keywordflow">return</span> (l + mean);
261<a name="l00367"></a>00367   }
262<a name="l00368"></a>00368 <span class="keyword">private</span>:
263<a name="l00369"></a>00369   <span class="keywordtype">double</span> mean, var, sqrt_12var;
264<a name="l00370"></a>00370   <a class="code" href="classitpp_1_1DSFMT.html" title="C++ implementation of dSFMT random number generatorThe DSFMT class implements parts...">Random_Generator</a> RNG;
265<a name="l00371"></a>00371 };
266<a name="l00372"></a>00372
267<a name="l00377"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html">00377</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a>
268<a name="l00378"></a>00378 {
269<a name="l00379"></a>00379 <span class="keyword">public</span>:
270<a name="l00381"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#2d512e5aee21a47cfc60574ddeaf7528">00381</a>   <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e" title="Default constructor.">Complex_Normal_RNG</a>(std::complex&lt;double&gt; <a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>):
271<a name="l00382"></a>00382       norm_factor(1.0 / std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(2.0)) {
272<a name="l00383"></a>00383     <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42" title="Set mean and variance.">setup</a>(mean, variance);
273<a name="l00384"></a>00384   }
274<a name="l00386"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e">00386</a>   <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#cdeaeea5da5398f8d67dba20b22b9e4e" title="Default constructor.">Complex_Normal_RNG</a>(): m(0.0), sigma(1.0), norm_factor(1.0 / std::<a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">sqrt</a>(2.0)) {}
275<a name="l00388"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42">00388</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#53ac6d89ea402591e4d44e86db3fee42" title="Set mean and variance.">setup</a>(std::complex&lt;double&gt; <a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) {
276<a name="l00389"></a>00389     m = mean;
277<a name="l00390"></a>00390     sigma = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(variance);
278<a name="l00391"></a>00391   }
279<a name="l00393"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#1d46fd9db76af4d71d86e6814b347574">00393</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#1d46fd9db76af4d71d86e6814b347574" title="Get mean and variance.">get_setup</a>(std::complex&lt;double&gt; &amp;<a class="code" href="group__statistics.html#gc370b4cfdc6baa037b7442ae6e2c4b5c" title="The mean value.">mean</a>, <span class="keywordtype">double</span> &amp;<a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>) {
280<a name="l00394"></a>00394     mean = m;
281<a name="l00395"></a>00395     variance = sigma * sigma;
282<a name="l00396"></a>00396   }
283<a name="l00398"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#4a2e5b365776f33b92b04a445d071719">00398</a>   std::complex&lt;double&gt; <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#4a2e5b365776f33b92b04a445d071719" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sigma*<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>() + m; }
284<a name="l00400"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8ba26cceb3dd6bc34f195b7ba4108d70">00400</a>   cvec <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8ba26cceb3dd6bc34f195b7ba4108d70" title="Get a sample vector.">operator()</a>(<span class="keywordtype">int</span> n) {
285<a name="l00401"></a>00401     cvec temp(n);
286<a name="l00402"></a>00402     <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(n, temp);
287<a name="l00403"></a>00403     temp *= sigma;
288<a name="l00404"></a>00404     temp += m;
289<a name="l00405"></a>00405     <span class="keywordflow">return</span> temp;
290<a name="l00406"></a>00406   }
291<a name="l00408"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8636a9a4df8548f8375562016e87272c">00408</a>   cmat <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8636a9a4df8548f8375562016e87272c" title="Get a sample matrix.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w) {
292<a name="l00409"></a>00409     cmat temp(h, w);
293<a name="l00410"></a>00410     <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(h, w, temp);
294<a name="l00411"></a>00411     temp *= sigma;
295<a name="l00412"></a>00412     temp += m;
296<a name="l00413"></a>00413     <span class="keywordflow">return</span> temp;
297<a name="l00414"></a>00414   }
298<a name="l00416"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482">00416</a>   std::complex&lt;double&gt; <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>() {
299<a name="l00417"></a>00417     <span class="keywordtype">double</span> a = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() * norm_factor;
300<a name="l00418"></a>00418     <span class="keywordtype">double</span> b = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() * norm_factor;
301<a name="l00419"></a>00419     <span class="keywordflow">return</span> std::complex&lt;double&gt;(a, b);
302<a name="l00420"></a>00420   }
303<a name="l00421"></a>00421
304<a name="l00423"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1">00423</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, cvec &amp;out) {
305<a name="l00424"></a>00424     out.set_size(size, <span class="keyword">false</span>);
306<a name="l00425"></a>00425     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; size; i++) out(i) = <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>();
307<a name="l00426"></a>00426   }
308<a name="l00427"></a>00427
309<a name="l00429"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f">00429</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, cmat &amp;out) {
310<a name="l00430"></a>00430     out.set_size(rows, cols, <span class="keyword">false</span>);
311<a name="l00431"></a>00431     <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; rows*cols; i++) out(i) = <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>();
312<a name="l00432"></a>00432   }
313<a name="l00433"></a>00433
314<a name="l00435"></a><a class="code" href="classitpp_1_1Complex__Normal__RNG.html#276cb8963c9681c5a76e7dfdb8f54d15">00435</a>   <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> &amp; <a class="code" href="classitpp_1_1Complex__Normal__RNG.html#276cb8963c9681c5a76e7dfdb8f54d15" title="Dummy assignment operator - MSVC++ warning C4512.">operator=</a>(<span class="keyword">const</span> <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a>&amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>; }
315<a name="l00436"></a>00436
316<a name="l00437"></a>00437 <span class="keyword">private</span>:
317<a name="l00438"></a>00438   std::complex&lt;double&gt; m;
318<a name="l00439"></a>00439   <span class="keywordtype">double</span> sigma;
319<a name="l00440"></a>00440   <span class="keyword">const</span> <span class="keywordtype">double</span> norm_factor;
320<a name="l00441"></a>00441   <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> nRNG;
321<a name="l00442"></a>00442 };
322<a name="l00443"></a>00443
323<a name="l00448"></a><a class="code" href="classitpp_1_1AR1__Normal__RNG.html">00448</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Normal_RNG</a>
324<a name="l00449"></a>00449 {
325<a name="l00450"></a>00450 <span class="keyword">public</span>:
326<a name="l00452"></a>00452   <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#3c4779b5210d4fdeb2378098937503fa" title="Constructor. Set mean, variance, and correlation.">AR1_Normal_RNG</a>(<span class="keywordtype">double</span> meanval = 0.0, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a> = 1.0,
327<a name="l00453"></a>00453                  <span class="keywordtype">double</span> rho = 0.0);
328<a name="l00455"></a>00455   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#b319f53d89932cb78b315cfa23f40be6" title="Set mean, variance, and correlation.">setup</a>(<span class="keywordtype">double</span> meanval, <span class="keywordtype">double</span> <a class="code" href="group__statistics.html#g7a4799948ff9779eaeecabde0ce5fcbb" title="The variance of the elements in the vector. Normalized with N-1 to be unbiased.">variance</a>, <span class="keywordtype">double</span> rho);
329<a name="l00457"></a>00457   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#95af980651296b81ac701af35cb63d06" title="Get mean, variance and correlation.">get_setup</a>(<span class="keywordtype">double</span> &amp;meanval, <span class="keywordtype">double</span> &amp;variance, <span class="keywordtype">double</span> &amp;rho) <span class="keyword">const</span>;
330<a name="l00459"></a>00459   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#35bb15ace58f392a785850a214c52b29" title="Set memory contents to zero.">reset</a>();
331<a name="l00461"></a><a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019">00461</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); }
332<a name="l00463"></a>00463   vec <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>(<span class="keywordtype">int</span> n);
333<a name="l00465"></a>00465   mat <a class="code" href="classitpp_1_1AR1__Normal__RNG.html#20b1474cf028817ae2e652639f032019" title="Get a single random sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
334<a name="l00466"></a>00466 <span class="keyword">private</span>:
335<a name="l00467"></a>00467   <span class="keywordtype">double</span> sample() {
336<a name="l00468"></a>00468     mem *= r;
337<a name="l00469"></a>00469     <span class="keywordflow">if</span> (odd) {
338<a name="l00470"></a>00470       r1 = m_2pi * RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>();
339<a name="l00471"></a>00471       r2 = <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(factr * <a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>()));
340<a name="l00472"></a>00472       mem += r2 * <a class="code" href="group__trifunc.html#g098a0025955a83d70458225324c21acf" title="Cosine function.">std::cos</a>(r1);
341<a name="l00473"></a>00473     }
342<a name="l00474"></a>00474     <span class="keywordflow">else</span> {
343<a name="l00475"></a>00475       mem += r2 * <a class="code" href="group__trifunc.html#g680fb273328ac7897cf28f6f980fe458" title="Sine function.">std::sin</a>(r1);
344<a name="l00476"></a>00476     }
345<a name="l00477"></a>00477     odd = !odd;
346<a name="l00478"></a>00478     <span class="keywordflow">return</span> (mem + mean);
347<a name="l00479"></a>00479   }
348<a name="l00480"></a>00480   <span class="keywordtype">double</span> mem, r, factr, mean, var, r1, r2;
349<a name="l00481"></a>00481   <span class="keywordtype">bool</span> odd;
350<a name="l00482"></a>00482   <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG;
351<a name="l00483"></a>00483 };
352<a name="l00484"></a>00484
353<a name="l00489"></a><a class="code" href="group__randgen.html#g0f1ab3d74408366b16f8d5bbbaaeea08">00489</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Gauss_RNG</a>;
354<a name="l00490"></a>00490
355<a name="l00495"></a><a class="code" href="group__randgen.html#gc65f0ea3d6ed038725b735070892c7ab">00495</a> <span class="keyword">typedef</span> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Normal_RNG</a> <a class="code" href="classitpp_1_1AR1__Normal__RNG.html" title="Filtered normal distribution.">AR1_Gauss_RNG</a>;
356<a name="l00496"></a>00496
357<a name="l00501"></a><a class="code" href="classitpp_1_1Weibull__RNG.html">00501</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Weibull__RNG.html" title="Weibull distribution.">Weibull_RNG</a>
358<a name="l00502"></a>00502 {
359<a name="l00503"></a>00503 <span class="keyword">public</span>:
360<a name="l00505"></a>00505   <a class="code" href="classitpp_1_1Weibull__RNG.html#4d633a2389197604e8a0c03f9b39ff93" title="Constructor. Set lambda and beta.">Weibull_RNG</a>(<span class="keywordtype">double</span> lambda = 1.0, <span class="keywordtype">double</span> beta = 1.0);
361<a name="l00507"></a>00507   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#d16d6f09ec1f318be2adb6893c903e60" title="Set lambda, and beta.">setup</a>(<span class="keywordtype">double</span> lambda, <span class="keywordtype">double</span> beta);
362<a name="l00509"></a><a class="code" href="classitpp_1_1Weibull__RNG.html#443bdcdd74fc622b96eefb445e74d4ef">00509</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#443bdcdd74fc622b96eefb445e74d4ef" title="Get lambda and beta.">get_setup</a>(<span class="keywordtype">double</span> &amp;lambda, <span class="keywordtype">double</span> &amp;beta) { lambda = l; beta = b; }
363<a name="l00511"></a><a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd">00511</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); }
364<a name="l00513"></a>00513   vec <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
365<a name="l00515"></a>00515   mat <a class="code" href="classitpp_1_1Weibull__RNG.html#243056f114791aa26e3de3296889babd" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
366<a name="l00516"></a>00516 <span class="keyword">private</span>:
367<a name="l00517"></a>00517   <span class="keywordtype">double</span> sample() {
368<a name="l00518"></a>00518     <span class="keywordflow">return</span> (<a class="code" href="group__logexpfunc.html#g40f48a75172e7f8bc8e58ed54262a04d" title="Calculates x to the power of y (x^y).">std::pow</a>(-<a class="code" href="group__logexpfunc.html#g320dc9f6d27a6cfe4e149633fd1ea566" title="The natural logarithm of the elements.">std::log</a>(RNG.<a class="code" href="classitpp_1_1DSFMT.html#b61104ac9de7e52f9462c41c8ffe4606" title="Generate uniform (0, 1] double pseudorandom number.">genrand_open_close</a>()), 1.0 / b) / l);
369<a name="l00519"></a>00519   }
370<a name="l00520"></a>00520   <span class="keywordtype">double</span> l, b;
371<a name="l00521"></a>00521   <span class="keywordtype">double</span> mean, var;
372<a name="l00522"></a>00522   <a class="code" href="group__randgen.html#g34eae65e1f1e6c0faced9e9d64eb67b4" title="Base class for random (stochastic) sources.Random_Generator is a typedef of DSFMT...">Random_Generator</a> RNG;
373<a name="l00523"></a>00523 };
374<a name="l00524"></a>00524
375<a name="l00529"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html">00529</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Rayleigh__RNG.html" title="Rayleigh distribution.">Rayleigh_RNG</a>
376<a name="l00530"></a>00530 {
377<a name="l00531"></a>00531 <span class="keyword">public</span>:
378<a name="l00533"></a>00533   <a class="code" href="classitpp_1_1Rayleigh__RNG.html#2c1f94a8a12419e703311a30ce41d079" title="Constructor. Set sigma.">Rayleigh_RNG</a>(<span class="keywordtype">double</span> sigma = 1.0);
379<a name="l00535"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e">00535</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e" title="Set sigma.">setup</a>(<span class="keywordtype">double</span> sigma) { sig = sigma; }
380<a name="l00537"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#2bcfda223a776abde99e1831fb022efc">00537</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#2bcfda223a776abde99e1831fb022efc" title="Get sigma.">get_setup</a>() { <span class="keywordflow">return</span> sig; }
381<a name="l00539"></a><a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7">00539</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); }
382<a name="l00541"></a>00541   vec <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
383<a name="l00543"></a>00543   mat <a class="code" href="classitpp_1_1Rayleigh__RNG.html#d135e55c4d58459d553b7caceb134ea7" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
384<a name="l00544"></a>00544 <span class="keyword">private</span>:
385<a name="l00545"></a>00545   <span class="keywordtype">double</span> sample() {
386<a name="l00546"></a>00546     <span class="keywordtype">double</span> s1 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
387<a name="l00547"></a>00547     <span class="keywordtype">double</span> s2 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
388<a name="l00548"></a>00548     <span class="comment">// s1 and s2 are N(0,1) and independent</span>
389<a name="l00549"></a>00549     <span class="keywordflow">return</span> (sig * <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(s1*s1 + s2*s2));
390<a name="l00550"></a>00550   }
391<a name="l00551"></a>00551   <span class="keywordtype">double</span> sig;
392<a name="l00552"></a>00552   Normal_RNG nRNG;
393<a name="l00553"></a>00553 };
394<a name="l00554"></a>00554
395<a name="l00559"></a><a class="code" href="classitpp_1_1Rice__RNG.html">00559</a> <span class="keyword">class </span><a class="code" href="classitpp_1_1Rice__RNG.html" title="Rice distribution.">Rice_RNG</a>
396<a name="l00560"></a>00560 {
397<a name="l00561"></a>00561 <span class="keyword">public</span>:
398<a name="l00563"></a>00563   <a class="code" href="classitpp_1_1Rice__RNG.html#68ca660f1f23122562e5d2f18f2b1713" title="Constructor. Set sigma, and v (if v = 0, Rice -&amp;gt; Rayleigh).">Rice_RNG</a>(<span class="keywordtype">double</span> sigma = 1.0, <span class="keywordtype">double</span> v = 1.0);
399<a name="l00565"></a><a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32">00565</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32" title="Set sigma, and v (if v = 0, Rice -&amp;gt; Rayleigh).">setup</a>(<span class="keywordtype">double</span> sigma, <span class="keywordtype">double</span> v) { sig = sigma; s = v; }
400<a name="l00567"></a><a class="code" href="classitpp_1_1Rice__RNG.html#5e41a5ebe6c83ea5ff41dd1018c9e1e0">00567</a>   <span class="keywordtype">void</span> <a class="code" href="classitpp_1_1Rice__RNG.html#5e41a5ebe6c83ea5ff41dd1018c9e1e0" title="Get parameters.">get_setup</a>(<span class="keywordtype">double</span> &amp;sigma, <span class="keywordtype">double</span> &amp;v) { sigma = sig; v = s; }
401<a name="l00569"></a><a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2">00569</a>   <span class="keywordtype">double</span> <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>() { <span class="keywordflow">return</span> sample(); }
402<a name="l00571"></a>00571   vec <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> n);
403<a name="l00573"></a>00573   mat <a class="code" href="classitpp_1_1Rice__RNG.html#1d5d5d302d4dc6b3033f135e28b43de2" title="Get one sample.">operator()</a>(<span class="keywordtype">int</span> h, <span class="keywordtype">int</span> w);
404<a name="l00574"></a>00574 <span class="keyword">private</span>:
405<a name="l00575"></a>00575   <span class="keywordtype">double</span> sample() {
406<a name="l00576"></a>00576     <span class="keywordtype">double</span> s1 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>() + s;
407<a name="l00577"></a>00577     <span class="keywordtype">double</span> s2 = nRNG.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>();
408<a name="l00578"></a>00578     <span class="comment">// s1 and s2 are N(0,1) and independent</span>
409<a name="l00579"></a>00579     <span class="keywordflow">return</span> (sig * <a class="code" href="group__miscfunc.html#g20af7c97287e8275db8c2b0f650310ac" title="Square root of the elements.">std::sqrt</a>(s1*s1 + s2*s2));
410<a name="l00580"></a>00580   }
411<a name="l00581"></a>00581   <span class="keywordtype">double</span> sig, s;
412<a name="l00582"></a>00582   Normal_RNG nRNG;
413<a name="l00583"></a>00583 };
414<a name="l00584"></a>00584
415<a name="l00587"></a>00587
416<a name="l00589"></a><a class="code" href="group__randgen.html#g5aa06887cf1fd3301b040987924068f0">00589</a> <span class="keyword">inline</span> <a class="code" href="classitpp_1_1bin.html" title="Binary arithmetic (boolean) class.">bin</a> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#4fc5c799e10ca93c8cfb1bfc3b45ce7b" title="Get a sample.">sample</a>(); }
417<a name="l00591"></a><a class="code" href="group__randgen.html#g0930c061b843c2233c6622595be42eaf">00591</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, bvec &amp;out) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#5f3458fc465076fce9d5c8b16907bbd8" title="Get a sample vector.">sample_vector</a>(size, out); }
418<a name="l00593"></a><a class="code" href="group__randgen.html#ged2de689e8203b351b30e850d5c138a6">00593</a> <span class="keyword">inline</span> bvec <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { bvec temp; <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(size, temp); <span class="keywordflow">return</span> temp; }
419<a name="l00595"></a><a class="code" href="group__randgen.html#gbf9ede8812e204b85fc1cdc8e4517e46">00595</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> &amp;out) { <a class="code" href="classitpp_1_1Bernoulli__RNG.html" title="Bernoulli distribution.">Bernoulli_RNG</a> src; src.<a class="code" href="classitpp_1_1Bernoulli__RNG.html#9a66abd0823032094349464b7be7736d" title="Get a sample matrix.">sample_matrix</a>(rows, cols, out); }
420<a name="l00597"></a><a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d">00597</a> <span class="keyword">inline</span> <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { <a class="code" href="mat_8h.html#f90acd1af41bf2d1d8a4bb23662fff69" title="bin matrix">bmat</a> temp; <a class="code" href="group__randgen.html#g2711f4c5927afc4e0aeb920007adfa1d" title="Generates a random bit matrix (equally likely 0s and 1s).">randb</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; }
421<a name="l00598"></a>00598
422<a name="l00600"></a><a class="code" href="group__randgen.html#g2c685c3170a003567543c620962fb44d">00600</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Uniform__RNG.html#4864ca6abf74c86fcd92467c002fc057" title="Get a Uniformly distributed [0,1) sample.">sample</a>(); }
423<a name="l00602"></a><a class="code" href="group__randgen.html#gc50bb2350abebb061c971dc75021f360">00602</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &amp;out) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1Uniform__RNG.html#3059402ccc1a0af044b9bd217a32f5c7" title="Get a Uniformly distributed [0,1) vector.">sample_vector</a>(size, out); }
424<a name="l00604"></a><a class="code" href="group__randgen.html#g7f371ec740044d6bbe027a40661b5928">00604</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { vec temp; <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(size, temp); <span class="keywordflow">return</span> temp; }
425<a name="l00606"></a><a class="code" href="group__randgen.html#g13d81185b2cfafbfd8cee70a5bf0de94">00606</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &amp;out) { <a class="code" href="classitpp_1_1Uniform__RNG.html" title="Uniform distribution.">Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1Uniform__RNG.html#bd0b24883ee383a4aa2d255b89af5ee4" title="Get a Uniformly distributed [0,1) matrix.">sample_matrix</a>(rows, cols, out); }
426<a name="l00608"></a><a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa">00608</a> <span class="keyword">inline</span> mat <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { mat temp; <a class="code" href="group__randgen.html#g7468ff48604f0bcc7e08b08f3d27d2fa" title="Generates a random uniform (0,1) matrix.">randu</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; }
427<a name="l00609"></a>00609
428<a name="l00611"></a><a class="code" href="group__randgen.html#g8d7b64e094607ed9f312e2436facddf1">00611</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(); }
429<a name="l00613"></a><a class="code" href="group__randgen.html#g4e2de9076e8fc03543972ce7ce0ba3c2">00613</a> <span class="keyword">inline</span> ivec <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(size); }
430<a name="l00615"></a><a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24">00615</a> <span class="keyword">inline</span> imat <a class="code" href="group__randgen.html#g23503b9d9f4d476cb0b5b0bc16a64c24" title="Generates a random imat with elements in the interval [low,high].">randi</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, <span class="keywordtype">int</span> low, <span class="keywordtype">int</span> high) { <a class="code" href="classitpp_1_1I__Uniform__RNG.html" title="Integer uniform distributionExample: Generation of random uniformly distributed integers...">I_Uniform_RNG</a> src; src.<a class="code" href="classitpp_1_1I__Uniform__RNG.html#319282f08bbeb7e254565455e256b6aa" title="set min and max values">setup</a>(low, high); <span class="keywordflow">return</span> src(rows, cols); }
431<a name="l00616"></a>00616
432<a name="l00618"></a><a class="code" href="group__randgen.html#g4548e4c5e7b3687bbf1cf4d15d6a2eaa">00618</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g4548e4c5e7b3687bbf1cf4d15d6a2eaa" title="Generates a random Rayleigh vector.">randray</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> sigma = 1.0) { <a class="code" href="classitpp_1_1Rayleigh__RNG.html" title="Rayleigh distribution.">Rayleigh_RNG</a> src; src.<a class="code" href="classitpp_1_1Rayleigh__RNG.html#d35061baec84b2f8e2a9b8be095caa7e" title="Set sigma.">setup</a>(sigma); <span class="keywordflow">return</span> src(size); }
433<a name="l00619"></a>00619
434<a name="l00621"></a><a class="code" href="group__randgen.html#g59d4c0350f23785130d41b89f9f8663a">00621</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g59d4c0350f23785130d41b89f9f8663a" title="Generates a random Rice vector (See J.G. Poakis, &amp;quot;Digital Communications, 3rd...">randrice</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> sigma = 1.0, <span class="keywordtype">double</span> s = 1.0) { <a class="code" href="classitpp_1_1Rice__RNG.html" title="Rice distribution.">Rice_RNG</a> src; src.<a class="code" href="classitpp_1_1Rice__RNG.html#f89e134c9dacaeed7eb8a79fc72cfa32" title="Set sigma, and v (if v = 0, Rice -&amp;gt; Rayleigh).">setup</a>(sigma, s); <span class="keywordflow">return</span> src(size); }
435<a name="l00622"></a>00622
436<a name="l00624"></a><a class="code" href="group__randgen.html#g315a5e1fd092db2f587acf8ee39b7e5a">00624</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#g315a5e1fd092db2f587acf8ee39b7e5a" title="Generates a random complex Gaussian vector.">randexp</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, <span class="keywordtype">double</span> lambda = 1.0) { <a class="code" href="classitpp_1_1Exponential__RNG.html" title="Exponential distribution.">Exponential_RNG</a> src; src.<a class="code" href="classitpp_1_1Exponential__RNG.html#c0a420aba9b985e2b046d6f481c520fe" title="Set lambda.">setup</a>(lambda); <span class="keywordflow">return</span> src(size); }
437<a name="l00625"></a>00625
438<a name="l00627"></a><a class="code" href="group__randgen.html#g9ecf5af23567f51abc9af737fdbd872a">00627</a> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Normal__RNG.html#10bf6949c45e781a36e967d9c8448614" title="Get a Normal distributed (0,1) sample.">sample</a>(); }
439<a name="l00629"></a><a class="code" href="group__randgen.html#g616ba8acf49bc0d2c2a61eb1073623e2">00629</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, vec &amp;out) { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Normal__RNG.html#03e547de2b7ed75be013ab665a07c4e8" title="Get a Normal distributed (0,1) vector.">sample_vector</a>(size, out); }
440<a name="l00631"></a><a class="code" href="group__randgen.html#g1d6c0886ce845add07826fd360bdab45">00631</a> <span class="keyword">inline</span> vec <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { vec temp; <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(size, temp); <span class="keywordflow">return</span> temp; }
441<a name="l00633"></a><a class="code" href="group__randgen.html#g65f4890bc86840235f95c2acbea6b3cb">00633</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, mat &amp;out)  { <a class="code" href="classitpp_1_1Normal__RNG.html" title="Normal distributionNormal (Gaussian) random variables, using a simplified Ziggurat...">Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Normal__RNG.html#7dab2664826b5e3e57c4087a50201bfd" title="Get a Normal distributed (0,1) matrix.">sample_matrix</a>(rows, cols, out); }
442<a name="l00635"></a><a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35">00635</a> <span class="keyword">inline</span> mat <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { mat temp; <a class="code" href="group__randgen.html#gea540712c17237806666c2dad0ed6f35" title="Generates a random Gaussian (0,1) matrix.">randn</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; }
443<a name="l00636"></a>00636
444<a name="l00641"></a><a class="code" href="group__randgen.html#g3c0042e44132fb903d44e7c5a03f5db3">00641</a> <span class="keyword">inline</span> std::complex&lt;double&gt; <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">void</span>) { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; <span class="keywordflow">return</span> src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#f9cd78184319ed6ec1b6916cec4d4482" title="Get a Complex Normal (0,1) distributed sample.">sample</a>(); }
445<a name="l00643"></a><a class="code" href="group__randgen.html#g307273f122c93815641174fc75c9a985">00643</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>, cvec &amp;out)  { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#7f2a2b96240917445295c847db708ba1" title="Get a Complex Normal (0,1) distributed vector.">sample_vector</a>(size, out); }
446<a name="l00645"></a><a class="code" href="group__randgen.html#gb83991583c36e80064a677df2b53739e">00645</a> <span class="keyword">inline</span> cvec <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> <a class="code" href="group__matrix__functions.html#g3c1a2b0972c6a8e1215eb3f76d7c7512" title="Length of vector.">size</a>) { cvec temp; <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(size, temp); <span class="keywordflow">return</span> temp; }
447<a name="l00647"></a><a class="code" href="group__randgen.html#g69f4508d8f1a63f8a7f637aaac0290e4">00647</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols, cmat &amp;out) { <a class="code" href="classitpp_1_1Complex__Normal__RNG.html" title="A Complex Normal Source.">Complex_Normal_RNG</a> src; src.<a class="code" href="classitpp_1_1Complex__Normal__RNG.html#8977d88cd8bcc92b87edcf1f71df311f" title="Get a Complex Normal (0,1) distributed matrix.">sample_matrix</a>(rows, cols, out); }
448<a name="l00649"></a><a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d">00649</a> <span class="keyword">inline</span> cmat <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(<span class="keywordtype">int</span> rows, <span class="keywordtype">int</span> cols) { cmat temp; <a class="code" href="group__randgen.html#g5c754dcd3476e028692bd13eb0cc548d" title="Generates a random complex Gaussian (0,1) matrix.">randn_c</a>(rows, cols, temp); <span class="keywordflow">return</span> temp; }
449<a name="l00650"></a>00650
450<a name="l00652"></a>00652
451<a name="l00653"></a>00653 } <span class="comment">// namespace itpp</span>
452<a name="l00654"></a>00654
453<a name="l00655"></a>00655 <span class="preprocessor">#endif // #ifndef RANDOM_H</span>
454</pre></div></div>
455<hr size="1"><address style="text-align: right;"><small>Generated on Tue Jun 2 10:02:12 2009 for mixpp by&nbsp;
456<a href="http://www.doxygen.org/index.html">
457<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
458</body>
459</html>
Note: See TracBrowser for help on using the browser.