Paradiseo-eo sources added
git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@40 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
parent
bc1f453978
commit
c3aec878e5
3609 changed files with 342772 additions and 0 deletions
525
trunk/paradiseo-eo/doc/html/eo_int_bounds_8h-source.html
Normal file
525
trunk/paradiseo-eo/doc/html/eo_int_bounds_8h-source.html
Normal file
|
|
@ -0,0 +1,525 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>EO: eoIntBounds.h Source File</title>
|
||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
||||
</head><body>
|
||||
<!-- Generated by Doxygen 1.3.9.1 -->
|
||||
<div class="qindex"> <form class="search" action="search.php" method="get">
|
||||
<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
|
||||
<div class="nav">
|
||||
<a class="el" href="dir_000000.html">src</a> / <a class="el" href="dir_000011.html">utils</a></div>
|
||||
<h1>eoIntBounds.h</h1><div class="fragment"><pre class="fragment">00001 <span class="comment">// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-</span>
|
||||
00002
|
||||
00003 <span class="comment">//-----------------------------------------------------------------------------</span>
|
||||
00004 <span class="comment">// eoIntBounds.h</span>
|
||||
00005 <span class="comment">// (c) Marc Schoenauer 2001, Maarten Keijzer 2000, GeNeura Team, 1998</span>
|
||||
00006 <span class="comment">/* </span>
|
||||
00007 <span class="comment"> This library is free software; you can redistribute it and/or</span>
|
||||
00008 <span class="comment"> modify it under the terms of the GNU Lesser General Public</span>
|
||||
00009 <span class="comment"> License as published by the Free Software Foundation; either</span>
|
||||
00010 <span class="comment"> version 2 of the License, or (at your option) any later version.</span>
|
||||
00011 <span class="comment"></span>
|
||||
00012 <span class="comment"> This library is distributed in the hope that it will be useful,</span>
|
||||
00013 <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
|
||||
00014 <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
|
||||
00015 <span class="comment"> Lesser General Public License for more details.</span>
|
||||
00016 <span class="comment"></span>
|
||||
00017 <span class="comment"> You should have received a copy of the GNU Lesser General Public</span>
|
||||
00018 <span class="comment"> License along with this library; if not, write to the Free Software</span>
|
||||
00019 <span class="comment"> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA</span>
|
||||
00020 <span class="comment"></span>
|
||||
00021 <span class="comment"> Contact: todos@geneura.ugr.es, http://geneura.ugr.es</span>
|
||||
00022 <span class="comment"> Marc.Schoenauer@polytechnique.fr</span>
|
||||
00023 <span class="comment"> mak@dhi.dk</span>
|
||||
00024 <span class="comment"> */</span>
|
||||
00025 <span class="comment">//-----------------------------------------------------------------------------</span>
|
||||
00026
|
||||
00027 <span class="preprocessor">#ifndef _eoIntBounds_h</span>
|
||||
00028 <span class="preprocessor"></span><span class="preprocessor">#define _eoIntBounds_h</span>
|
||||
00029 <span class="preprocessor"></span>
|
||||
00030 <span class="preprocessor">#include <stdexcept></span> <span class="comment">// std::exceptions!</span>
|
||||
00031 <span class="preprocessor">#include <utils/eoRNG.h></span>
|
||||
00032
|
||||
<a name="l00075"></a><a class="code" href="classeo_int_bounds.html">00075</a> <span class="keyword">class </span><a class="code" href="classeo_int_bounds.html">eoIntBounds</a> : <span class="keyword">public</span> <a class="code" href="classeo_persistent.html">eoPersistent</a>
|
||||
00076 {
|
||||
00077 <span class="keyword">public</span>:
|
||||
00078 <span class="keyword">virtual</span> ~<a class="code" href="classeo_int_bounds.html">eoIntBounds</a>(){}
|
||||
00079
|
||||
00082 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_bounds.html#a1">isBounded</a>(<span class="keywordtype">void</span>) <span class="keyword">const </span>= 0;
|
||||
00083
|
||||
00087 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_bounds.html#a2">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>) <span class="keyword">const </span>= 0;
|
||||
00088
|
||||
00091 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_bounds.html#a3">isMinBounded</a>(<span class="keywordtype">void</span>) <span class="keyword">const </span>= 0;
|
||||
00092
|
||||
00095 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_bounds.html#a4">isMaxBounded</a>(<span class="keywordtype">void</span>) <span class="keyword">const </span>= 0;
|
||||
00096
|
||||
00099 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_bounds.html#a5">isInBounds</a>(<span class="keywordtype">double</span>) <span class="keyword">const </span>= 0;
|
||||
00100
|
||||
00103 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_bounds.html#a6">foldsInBounds</a>(<span class="keywordtype">double</span> &) <span class="keyword">const </span>= 0;
|
||||
00104
|
||||
<a name="l00107"></a><a class="code" href="classeo_int_bounds.html#a7">00107</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_bounds.html#a6">foldsInBounds</a>(<span class="keywordtype">long</span> <span class="keywordtype">int</span> & i)<span class="keyword"> const</span>
|
||||
00108 <span class="keyword"> </span>{
|
||||
00109 <span class="keywordtype">double</span> r = double(i);
|
||||
00110 <a class="code" href="classeo_int_bounds.html#a6">foldsInBounds</a>(r);
|
||||
00111 i = (<span class="keywordtype">long</span> int)(r);
|
||||
00112 }
|
||||
00113
|
||||
00116 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_bounds.html#a8">truncate</a>(<span class="keywordtype">double</span> &) <span class="keyword">const </span>= 0;
|
||||
00117
|
||||
<a name="l00120"></a><a class="code" href="classeo_int_bounds.html#a9">00120</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_bounds.html#a8">truncate</a>(<span class="keywordtype">long</span> <span class="keywordtype">int</span> & i)<span class="keyword"> const </span>
|
||||
00121 <span class="keyword"> </span>{
|
||||
00122 <span class="keywordtype">double</span> r = double(i);
|
||||
00123 <a class="code" href="classeo_int_bounds.html#a8">truncate</a>(r);
|
||||
00124 i = (<span class="keywordtype">long</span> int)(r);
|
||||
00125 }
|
||||
00126
|
||||
00130 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_bounds.html#a10">minimum</a>() <span class="keyword">const </span>= 0 ;
|
||||
00134 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_bounds.html#a11">maximum</a>() <span class="keyword">const </span>= 0 ;
|
||||
00138 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_bounds.html#a12">range</a>() <span class="keyword">const </span>= 0;
|
||||
00139
|
||||
00144 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_int_bounds.html#a13">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng) <span class="keyword">const </span>= 0;
|
||||
00145 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> random(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng) <span class="keyword">const </span>= 0;
|
||||
00146
|
||||
00148 <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_int_bounds.html#a15">dup</a>() <span class="keyword">const </span>= 0;
|
||||
00149 };
|
||||
00150
|
||||
<a name="l00153"></a><a class="code" href="classeo_int_no_bounds.html">00153</a> <span class="keyword">class </span><a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a> : <span class="keyword">public</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>
|
||||
00154 {
|
||||
00155 <span class="keyword">public</span>:
|
||||
00156 <span class="keyword">virtual</span> ~<a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a>(){}
|
||||
00157
|
||||
<a name="l00158"></a><a class="code" href="classeo_int_no_bounds.html#a1">00158</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_no_bounds.html#a1">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00159"></a><a class="code" href="classeo_int_no_bounds.html#a2">00159</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_no_bounds.html#a2">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
<a name="l00160"></a><a class="code" href="classeo_int_no_bounds.html#a3">00160</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_no_bounds.html#a3">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00161"></a><a class="code" href="classeo_int_no_bounds.html#a4">00161</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_no_bounds.html#a4">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00162"></a><a class="code" href="classeo_int_no_bounds.html#a5">00162</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_no_bounds.html#a5">foldsInBounds</a>(<span class="keywordtype">double</span> &)<span class="keyword"> const </span>{<span class="keywordflow">return</span>;}
|
||||
<a name="l00163"></a><a class="code" href="classeo_int_no_bounds.html#a6">00163</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_no_bounds.html#a6">truncate</a>(<span class="keywordtype">double</span> &)<span class="keyword"> const </span>{<span class="keywordflow">return</span>;}
|
||||
<a name="l00164"></a><a class="code" href="classeo_int_no_bounds.html#a7">00164</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_no_bounds.html#a7">isInBounds</a>(<span class="keywordtype">double</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
00165
|
||||
<a name="l00166"></a><a class="code" href="classeo_int_no_bounds.html#a8">00166</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_no_bounds.html#a8">minimum</a>()<span class="keyword"> const</span>
|
||||
00167 <span class="keyword"> </span>{
|
||||
00168 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get minimum of unbounded eoIntBounds"</span>);
|
||||
00169 }
|
||||
<a name="l00170"></a><a class="code" href="classeo_int_no_bounds.html#a9">00170</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_no_bounds.html#a9">maximum</a>()<span class="keyword"> const </span>
|
||||
00171 <span class="keyword"> </span>{
|
||||
00172 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get maximum of unbounded eoIntBounds"</span>);
|
||||
00173 }
|
||||
<a name="l00174"></a><a class="code" href="classeo_int_no_bounds.html#a10">00174</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_no_bounds.html#a10">range</a>()<span class="keyword"> const </span>
|
||||
00175 <span class="keyword"> </span>{
|
||||
00176 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of unbounded eoIntBounds"</span>);
|
||||
00177 }
|
||||
00178
|
||||
<a name="l00179"></a><a class="code" href="classeo_int_no_bounds.html#a11">00179</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_int_no_bounds.html#a11">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00180 <span class="keyword"> </span>{
|
||||
00181 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in unbounded eoIntBounds"</span>);
|
||||
00182 }
|
||||
00183 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> random(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00184 <span class="keyword"> </span>{
|
||||
00185 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in unbounded eoIntBounds"</span>);
|
||||
00186 }
|
||||
00187
|
||||
00188 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00195"></a><a class="code" href="classeo_int_no_bounds.html#a13">00195</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_no_bounds.html#a13">readFrom</a>(std::istream& _is)
|
||||
00196 {
|
||||
00197 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoIntBounds::readFrom"</span>);
|
||||
00198 }
|
||||
00199
|
||||
<a name="l00204"></a><a class="code" href="classeo_int_no_bounds.html#a14">00204</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_no_bounds.html#a14">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00205 <span class="keyword"> </span>{
|
||||
00206 _os << <span class="stringliteral">"[-inf,+inf]"</span>;
|
||||
00207 }
|
||||
00208
|
||||
<a name="l00210"></a><a class="code" href="classeo_int_no_bounds.html#a15">00210</a> <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_int_no_bounds.html#a15">dup</a>()<span class="keyword"> const </span>
|
||||
00211 <span class="keyword"> </span>{
|
||||
00212 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a>(*<span class="keyword">this</span>);
|
||||
00213 }
|
||||
00214
|
||||
00215 };
|
||||
00216
|
||||
00217 <span class="comment">// one object for all - see eoIntBounds.cpp</span>
|
||||
00218 <span class="keyword">extern</span> <a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a> eoDummyIntNoBounds;
|
||||
00219
|
||||
<a name="l00223"></a><a class="code" href="classeo_int_interval.html">00223</a> <span class="keyword">class </span><a class="code" href="classeo_int_interval.html">eoIntInterval</a> : <span class="keyword">public</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>
|
||||
00224 {
|
||||
00225 <span class="keyword">public</span> :
|
||||
00226 <span class="keyword">virtual</span> ~<a class="code" href="classeo_int_interval.html">eoIntInterval</a>(){}
|
||||
00227
|
||||
<a name="l00231"></a><a class="code" href="classeo_int_interval.html#a1">00231</a> <a class="code" href="classeo_int_interval.html#a1">eoIntInterval</a>(<span class="keywordtype">long</span> <span class="keywordtype">int</span> _min=0, <span class="keywordtype">long</span> <span class="keywordtype">int</span> _max=1) :
|
||||
00232 repMinimum(_min), repMaximum(_max), repRange(_max-_min)
|
||||
00233 {
|
||||
00234 <span class="keywordflow">if</span> (repRange<=0)
|
||||
00235 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Void range in eoIntBounds"</span>);
|
||||
00236 }
|
||||
00237
|
||||
00238 <span class="comment">// accessors </span>
|
||||
<a name="l00239"></a><a class="code" href="classeo_int_interval.html#a2">00239</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_interval.html#a2">minimum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMinimum; }
|
||||
<a name="l00240"></a><a class="code" href="classeo_int_interval.html#a3">00240</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_interval.html#a3">maximum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMaximum; }
|
||||
<a name="l00241"></a><a class="code" href="classeo_int_interval.html#a4">00241</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_interval.html#a4">range</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repRange; }
|
||||
00242
|
||||
00243 <span class="comment">// description</span>
|
||||
<a name="l00244"></a><a class="code" href="classeo_int_interval.html#a5">00244</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_interval.html#a5">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
<a name="l00245"></a><a class="code" href="classeo_int_interval.html#a6">00245</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_interval.html#a6">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00246"></a><a class="code" href="classeo_int_interval.html#a7">00246</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_interval.html#a7">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
<a name="l00247"></a><a class="code" href="classeo_int_interval.html#a8">00247</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_interval.html#a8">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
00248
|
||||
<a name="l00249"></a><a class="code" href="classeo_int_interval.html#a9">00249</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_int_interval.html#a9">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00250 <span class="keyword"> </span>{
|
||||
00251 <span class="keywordflow">return</span> repMinimum + _rng.<a class="code" href="classeo_int_bounds.html#a13">uniform</a>(repRange);
|
||||
00252 }
|
||||
00253
|
||||
00254 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> random(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00255 <span class="keyword"> </span>{
|
||||
00256 <span class="keywordflow">return</span> repMinimum + _rng.<a class="code" href="classeo_int_bounds.html#a14">random</a>(repRange);
|
||||
00257 }
|
||||
00258
|
||||
00259 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00260"></a><a class="code" href="classeo_int_interval.html#a11">00260</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_interval.html#a11">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00261 <span class="keyword"> </span>{
|
||||
00262 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00263 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00264 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00265 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00266 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00267 }
|
||||
00268
|
||||
00269 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00270"></a><a class="code" href="classeo_int_interval.html#a12">00270</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_interval.html#a12">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00271 <span class="keyword"> </span>{
|
||||
00272 <span class="keywordtype">long</span> iloc;
|
||||
00273 <span class="keywordtype">double</span> dlargloc = 2 * <a class="code" href="classeo_int_interval.html#a4">range</a>() ;
|
||||
00274
|
||||
00275 <span class="keywordflow">if</span> (fabs(_r) > 1.0E9) <span class="comment">// iloc too large!</span>
|
||||
00276 {
|
||||
00277 _r = <a class="code" href="classeo_int_interval.html#a9">uniform</a>();
|
||||
00278 <span class="keywordflow">return</span>;
|
||||
00279 }
|
||||
00280
|
||||
00281 <span class="keywordflow">if</span> ( (_r > <a class="code" href="classeo_int_interval.html#a3">maximum</a>()) )
|
||||
00282 {
|
||||
00283 iloc = (long) ( (_r-<a class="code" href="classeo_int_interval.html#a2">minimum</a>()) / dlargloc ) ;
|
||||
00284 _r -= dlargloc * iloc ;
|
||||
00285 <span class="keywordflow">if</span> ( _r > <a class="code" href="classeo_int_interval.html#a3">maximum</a>() )
|
||||
00286 _r = 2*<a class="code" href="classeo_int_interval.html#a3">maximum</a>() - _r ;
|
||||
00287 }
|
||||
00288
|
||||
00289 <span class="keywordflow">if</span> (_r < <a class="code" href="classeo_int_interval.html#a2">minimum</a>())
|
||||
00290 {
|
||||
00291 iloc = (long) ( (<a class="code" href="classeo_int_interval.html#a3">maximum</a>()-_r) / dlargloc ) ;
|
||||
00292 _r += dlargloc * iloc ;
|
||||
00293 <span class="keywordflow">if</span> (_r < <a class="code" href="classeo_int_interval.html#a2">minimum</a>())
|
||||
00294 _r = 2*<a class="code" href="classeo_int_interval.html#a2">minimum</a>() - _r ;
|
||||
00295 }
|
||||
00296 }
|
||||
00297
|
||||
00298 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00299"></a><a class="code" href="classeo_int_interval.html#a13">00299</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_interval.html#a13">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00300 <span class="keyword"> </span>{
|
||||
00301 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00302 _r = repMinimum;
|
||||
00303 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00304 _r = repMaximum;
|
||||
00305 <span class="keywordflow">return</span>;
|
||||
00306 }
|
||||
00307
|
||||
00308 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00315"></a><a class="code" href="classeo_int_interval.html#a14">00315</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_interval.html#a14">readFrom</a>(std::istream& _is)
|
||||
00316 {
|
||||
00317 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoIntInterval::readFrom"</span>);
|
||||
00318 }
|
||||
00319
|
||||
<a name="l00324"></a><a class="code" href="classeo_int_interval.html#a15">00324</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_interval.html#a15">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00325 <span class="keyword"> </span>{
|
||||
00326 _os << <span class="stringliteral">"["</span> << repMinimum << <span class="stringliteral">","</span> << repMaximum << <span class="stringliteral">"]"</span>;
|
||||
00327 }
|
||||
00328
|
||||
<a name="l00330"></a><a class="code" href="classeo_int_interval.html#a16">00330</a> <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_int_interval.html#a16">dup</a>()<span class="keyword"> const </span>
|
||||
00331 <span class="keyword"> </span>{
|
||||
00332 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_int_interval.html#a1">eoIntInterval</a>(*<span class="keyword">this</span>);
|
||||
00333 }
|
||||
00334
|
||||
00335 <span class="keyword">private</span> :
|
||||
00336 <span class="keywordtype">long</span> <span class="keywordtype">int</span> repMinimum;
|
||||
00337 <span class="keywordtype">long</span> <span class="keywordtype">int</span> repMaximum;
|
||||
00338 <span class="keywordtype">long</span> <span class="keywordtype">int</span> repRange; <span class="comment">// to minimize operations ???</span>
|
||||
00339 };
|
||||
00340
|
||||
<a name="l00344"></a><a class="code" href="classeo_int_below_bound.html">00344</a> <span class="keyword">class </span><a class="code" href="classeo_int_below_bound.html">eoIntBelowBound</a> : <span class="keyword">public</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>
|
||||
00345 {
|
||||
00346 <span class="keyword">public</span> :
|
||||
00347 <span class="keyword">virtual</span> ~<a class="code" href="classeo_int_below_bound.html">eoIntBelowBound</a>(){}
|
||||
<a name="l00351"></a><a class="code" href="classeo_int_below_bound.html#a1">00351</a> <a class="code" href="classeo_int_below_bound.html#a1">eoIntBelowBound</a>(<span class="keywordtype">long</span> <span class="keywordtype">int</span> _min=0) :
|
||||
00352 repMinimum(_min)
|
||||
00353 {}
|
||||
00354
|
||||
00355 <span class="comment">// accessors </span>
|
||||
<a name="l00356"></a><a class="code" href="classeo_int_below_bound.html#a2">00356</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_below_bound.html#a2">minimum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMinimum; }
|
||||
00357
|
||||
<a name="l00358"></a><a class="code" href="classeo_int_below_bound.html#a3">00358</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_below_bound.html#a3">maximum</a>()<span class="keyword"> const </span>
|
||||
00359 <span class="keyword"> </span>{
|
||||
00360 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get maximum of eoIntBelowBound"</span>);
|
||||
00361 }
|
||||
<a name="l00362"></a><a class="code" href="classeo_int_below_bound.html#a4">00362</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_below_bound.html#a4">range</a>()<span class="keyword"> const </span>
|
||||
00363 <span class="keyword"> </span>{
|
||||
00364 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of eoIntBelowBound"</span>);
|
||||
00365 }
|
||||
00366
|
||||
<a name="l00367"></a><a class="code" href="classeo_int_below_bound.html#a5">00367</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_int_below_bound.html#a5">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00368 <span class="keyword"> </span>{
|
||||
00369 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoIntBelowBound"</span>);
|
||||
00370 }
|
||||
00371 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> random(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00372 <span class="keyword"> </span>{
|
||||
00373 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoIntBelowBound"</span>);
|
||||
00374 }
|
||||
00375
|
||||
00376 <span class="comment">// description</span>
|
||||
<a name="l00377"></a><a class="code" href="classeo_int_below_bound.html#a7">00377</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_below_bound.html#a7">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00378"></a><a class="code" href="classeo_int_below_bound.html#a8">00378</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_below_bound.html#a8">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00379"></a><a class="code" href="classeo_int_below_bound.html#a9">00379</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_below_bound.html#a9">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
<a name="l00380"></a><a class="code" href="classeo_int_below_bound.html#a10">00380</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_below_bound.html#a10">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
00381
|
||||
00382 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00383"></a><a class="code" href="classeo_int_below_bound.html#a11">00383</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_below_bound.html#a11">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00384 <span class="keyword"> </span>{
|
||||
00385 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00386 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00387 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00388 }
|
||||
00389
|
||||
00390 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00391"></a><a class="code" href="classeo_int_below_bound.html#a12">00391</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_below_bound.html#a12">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00392 <span class="keyword"> </span>{
|
||||
00393 <span class="comment">// easy as a pie: symmetry w.r.t. minimum</span>
|
||||
00394 <span class="keywordflow">if</span> (_r < repMinimum) <span class="comment">// nothing to do otherwise</span>
|
||||
00395 _r = 2*repMinimum - _r;
|
||||
00396 return ;
|
||||
00397 }
|
||||
00398
|
||||
00399 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00400"></a><a class="code" href="classeo_int_below_bound.html#a13">00400</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_below_bound.html#a13">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00401 <span class="keyword"> </span>{
|
||||
00402 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00403 _r = repMinimum;
|
||||
00404 <span class="keywordflow">return</span>;
|
||||
00405 }
|
||||
00406
|
||||
00407 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00414"></a><a class="code" href="classeo_int_below_bound.html#a14">00414</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_below_bound.html#a14">readFrom</a>(std::istream& _is)
|
||||
00415 {
|
||||
00416 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoIntBelowBound::readFrom"</span>);
|
||||
00417 }
|
||||
00418
|
||||
<a name="l00423"></a><a class="code" href="classeo_int_below_bound.html#a15">00423</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_below_bound.html#a15">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00424 <span class="keyword"> </span>{
|
||||
00425 _os << <span class="stringliteral">"["</span> << repMinimum << <span class="stringliteral">",+inf]"</span>;
|
||||
00426 }
|
||||
00427
|
||||
<a name="l00429"></a><a class="code" href="classeo_int_below_bound.html#a16">00429</a> <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_int_below_bound.html#a16">dup</a>()<span class="keyword"> const </span>
|
||||
00430 <span class="keyword"> </span>{
|
||||
00431 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_int_below_bound.html#a1">eoIntBelowBound</a>(*<span class="keyword">this</span>);
|
||||
00432 }
|
||||
00433
|
||||
00434 <span class="keyword">private</span> :
|
||||
00435 <span class="keywordtype">long</span> <span class="keywordtype">int</span> repMinimum;
|
||||
00436 };
|
||||
00437
|
||||
<a name="l00441"></a><a class="code" href="classeo_int_above_bound.html">00441</a> <span class="keyword">class </span><a class="code" href="classeo_int_above_bound.html">eoIntAboveBound</a> : <span class="keyword">public</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>
|
||||
00442 {
|
||||
00443 <span class="keyword">public</span> :
|
||||
00444 <span class="keyword">virtual</span> ~<a class="code" href="classeo_int_above_bound.html">eoIntAboveBound</a>(){}
|
||||
00445
|
||||
<a name="l00449"></a><a class="code" href="classeo_int_above_bound.html#a1">00449</a> <a class="code" href="classeo_int_above_bound.html#a1">eoIntAboveBound</a>(<span class="keywordtype">long</span> <span class="keywordtype">int</span> _max=0) :
|
||||
00450 repMaximum(_max)
|
||||
00451 {}
|
||||
00452
|
||||
00453 <span class="comment">// accessors </span>
|
||||
<a name="l00454"></a><a class="code" href="classeo_int_above_bound.html#a2">00454</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_above_bound.html#a2">maximum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMaximum; }
|
||||
00455
|
||||
<a name="l00456"></a><a class="code" href="classeo_int_above_bound.html#a3">00456</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_above_bound.html#a3">minimum</a>()<span class="keyword"> const </span>
|
||||
00457 <span class="keyword"> </span>{
|
||||
00458 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get minimum of eoIntAboveBound"</span>);
|
||||
00459 }
|
||||
<a name="l00460"></a><a class="code" href="classeo_int_above_bound.html#a4">00460</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_int_above_bound.html#a4">range</a>()<span class="keyword"> const </span>
|
||||
00461 <span class="keyword"> </span>{
|
||||
00462 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of eoIntAboveBound"</span>);
|
||||
00463 }
|
||||
00464
|
||||
<a name="l00465"></a><a class="code" href="classeo_int_above_bound.html#a5">00465</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_int_above_bound.html#a5">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00466 <span class="keyword"> </span>{
|
||||
00467 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoIntAboveBound"</span>);
|
||||
00468 }
|
||||
00469 <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> random(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00470 <span class="keyword"> </span>{
|
||||
00471 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoIntAboveBound"</span>);
|
||||
00472 }
|
||||
00473
|
||||
00474 <span class="comment">// description</span>
|
||||
<a name="l00475"></a><a class="code" href="classeo_int_above_bound.html#a7">00475</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_above_bound.html#a7">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00476"></a><a class="code" href="classeo_int_above_bound.html#a8">00476</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_above_bound.html#a8">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00477"></a><a class="code" href="classeo_int_above_bound.html#a9">00477</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_above_bound.html#a9">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00478"></a><a class="code" href="classeo_int_above_bound.html#a10">00478</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_above_bound.html#a10">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
00479
|
||||
00480 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00481"></a><a class="code" href="classeo_int_above_bound.html#a11">00481</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_int_above_bound.html#a11">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00482 <span class="keyword"> </span>{
|
||||
00483 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00484 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00485 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00486 }
|
||||
00487
|
||||
00488 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00489"></a><a class="code" href="classeo_int_above_bound.html#a12">00489</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_above_bound.html#a12">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00490 <span class="keyword"> </span>{
|
||||
00491 <span class="comment">// easy as a pie: symmetry w.r.t. maximum</span>
|
||||
00492 <span class="keywordflow">if</span> (_r > repMaximum) <span class="comment">// nothing to do otherwise</span>
|
||||
00493 _r = 2*repMaximum - _r;
|
||||
00494 return ;
|
||||
00495 }
|
||||
00496
|
||||
00497 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00498"></a><a class="code" href="classeo_int_above_bound.html#a13">00498</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_above_bound.html#a13">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00499 <span class="keyword"> </span>{
|
||||
00500 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00501 _r = repMaximum;
|
||||
00502 <span class="keywordflow">return</span>;
|
||||
00503 }
|
||||
00504
|
||||
00505 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00512"></a><a class="code" href="classeo_int_above_bound.html#a14">00512</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_above_bound.html#a14">readFrom</a>(std::istream& _is)
|
||||
00513 {
|
||||
00514 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoIntAboveBound::readFrom"</span>);
|
||||
00515 }
|
||||
00516
|
||||
<a name="l00521"></a><a class="code" href="classeo_int_above_bound.html#a15">00521</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_int_above_bound.html#a15">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00522 <span class="keyword"> </span>{
|
||||
00523 _os << <span class="stringliteral">"[-inf,"</span> << repMaximum << <span class="stringliteral">"]"</span>;
|
||||
00524 }
|
||||
00525
|
||||
<a name="l00527"></a><a class="code" href="classeo_int_above_bound.html#a16">00527</a> <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_int_above_bound.html#a16">dup</a>()<span class="keyword"> const </span>
|
||||
00528 <span class="keyword"> </span>{
|
||||
00529 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_int_above_bound.html#a1">eoIntAboveBound</a>(*<span class="keyword">this</span>);
|
||||
00530 }
|
||||
00531
|
||||
00532 <span class="keyword">private</span> :
|
||||
00533 <span class="keywordtype">long</span> <span class="keywordtype">int</span> repMaximum;
|
||||
00534 };
|
||||
00535
|
||||
00537
|
||||
<a name="l00541"></a><a class="code" href="classeo_general_int_bounds.html">00541</a> <span class="keyword">class </span><a class="code" href="classeo_general_int_bounds.html">eoGeneralIntBounds</a> : <span class="keyword">public</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>
|
||||
00542 {
|
||||
00543 <span class="keyword">public</span>:
|
||||
<a name="l00545"></a><a class="code" href="classeo_general_int_bounds.html#a0">00545</a> <a class="code" href="classeo_general_int_bounds.html#a0">eoGeneralIntBounds</a>(std::string _s = <span class="stringliteral">"[-infinity,+infinity]"</span>)
|
||||
00546 {
|
||||
00547 repBound = <a class="code" href="classeo_general_int_bounds.html#d0">getBoundsFromString</a>(_s);
|
||||
00548 }
|
||||
00549
|
||||
<a name="l00551"></a><a class="code" href="classeo_general_int_bounds.html#a1">00551</a> <a class="code" href="classeo_general_int_bounds.html#a0">eoGeneralIntBounds</a>(<span class="keyword">const</span> <a class="code" href="classeo_general_int_bounds.html">eoGeneralIntBounds</a> & _b) : <a class="code" href="classeo_int_bounds.html">eoIntBounds</a>(_b)
|
||||
00552 {
|
||||
00553 <span class="comment">// replicate the embedded bound (I'm pretty sure there is another</span>
|
||||
00554 <span class="comment">// way to do that !!!</span>
|
||||
00555
|
||||
00556 <span class="keywordtype">bool</span> minBounded = _b.<a class="code" href="classeo_general_int_bounds.html#a6">isMinBounded</a>();
|
||||
00557 <span class="keywordtype">bool</span> maxBounded = _b.<a class="code" href="classeo_general_int_bounds.html#a7">isMaxBounded</a>();
|
||||
00558 <span class="keywordtype">long</span> <span class="keywordtype">int</span> minimum, maximum;
|
||||
00559 <span class="keyword">const</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> & bb = _b.<a class="code" href="classeo_general_int_bounds.html#a17">theBounds</a>();
|
||||
00560 <span class="keywordflow">if</span> (minBounded) minimum = bb.<a class="code" href="classeo_int_bounds.html#a10">minimum</a>();
|
||||
00561 <span class="keywordflow">if</span> (maxBounded) maximum = bb.<a class="code" href="classeo_int_bounds.html#a11">maximum</a>();
|
||||
00562
|
||||
00563 <span class="keywordflow">if</span> (minBounded && maxBounded)
|
||||
00564 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_interval.html">eoIntInterval</a>(minimum, maximum);
|
||||
00565 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && !maxBounded) <span class="comment">// no bound at all</span>
|
||||
00566 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a>;
|
||||
00567 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && maxBounded)
|
||||
00568 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_above_bound.html">eoIntAboveBound</a>(maximum);
|
||||
00569 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minBounded && !maxBounded)
|
||||
00570 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_below_bound.html">eoIntBelowBound</a>(minimum);
|
||||
00571 }
|
||||
00572
|
||||
00573 <a class="code" href="classeo_general_int_bounds.html">eoGeneralIntBounds</a>& operator=(<span class="keyword">const</span> <a class="code" href="classeo_general_int_bounds.html">eoGeneralIntBounds</a>& _b)
|
||||
00574 {
|
||||
00575 <span class="comment">// replicate the embedded bound (I'm pretty sure there is another</span>
|
||||
00576 <span class="comment">// way to do that !!!</span>
|
||||
00577
|
||||
00578 <span class="keywordtype">bool</span> minBounded = _b.<a class="code" href="classeo_general_int_bounds.html#a6">isMinBounded</a>();
|
||||
00579 <span class="keywordtype">bool</span> maxBounded = _b.<a class="code" href="classeo_general_int_bounds.html#a7">isMaxBounded</a>();
|
||||
00580 <span class="keywordtype">long</span> <span class="keywordtype">int</span> minimum, maximum;
|
||||
00581 <span class="keyword">const</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> & bb = _b.<a class="code" href="classeo_general_int_bounds.html#a17">theBounds</a>();
|
||||
00582 <span class="keywordflow">if</span> (minBounded) minimum = bb.<a class="code" href="classeo_int_bounds.html#a10">minimum</a>();
|
||||
00583 <span class="keywordflow">if</span> (maxBounded) maximum = bb.<a class="code" href="classeo_int_bounds.html#a11">maximum</a>();
|
||||
00584
|
||||
00585 <span class="comment">// first delete the embedded bounds if necessary</span>
|
||||
00586 <span class="keywordflow">if</span> (repBound)
|
||||
00587 <span class="keyword">delete</span> repBound;
|
||||
00588 <span class="comment">// now reallocate</span>
|
||||
00589 <span class="keywordflow">if</span> (minBounded && maxBounded)
|
||||
00590 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_interval.html">eoIntInterval</a>(minimum, maximum);
|
||||
00591 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && !maxBounded) <span class="comment">// no bound at all</span>
|
||||
00592 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_no_bounds.html">eoIntNoBounds</a>;
|
||||
00593 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && maxBounded)
|
||||
00594 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_above_bound.html">eoIntAboveBound</a>(maximum);
|
||||
00595 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minBounded && !maxBounded)
|
||||
00596 repBound = <span class="keyword">new</span> <a class="code" href="classeo_int_below_bound.html">eoIntBelowBound</a>(minimum);
|
||||
00597 <span class="keywordflow">return</span> (*this);
|
||||
00598 }
|
||||
00599
|
||||
00600
|
||||
<a name="l00602"></a><a class="code" href="classeo_general_int_bounds.html#a3">00602</a> <a class="code" href="classeo_general_int_bounds.html#a3">~eoGeneralIntBounds</a>()
|
||||
00603 {
|
||||
00604 <span class="keyword">delete</span> repBound;
|
||||
00605 }
|
||||
00606
|
||||
00608
|
||||
<a name="l00610"></a><a class="code" href="classeo_general_int_bounds.html#a4">00610</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_int_bounds.html#a4">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a1">isBounded</a>();}
|
||||
00611
|
||||
<a name="l00615"></a><a class="code" href="classeo_general_int_bounds.html#a5">00615</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_int_bounds.html#a5">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a2">hasNoBoundAtAll</a>();}
|
||||
00616
|
||||
<a name="l00619"></a><a class="code" href="classeo_general_int_bounds.html#a6">00619</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_int_bounds.html#a6">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a3">isMinBounded</a>();}
|
||||
00620
|
||||
<a name="l00623"></a><a class="code" href="classeo_general_int_bounds.html#a7">00623</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_int_bounds.html#a7">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a4">isMaxBounded</a>();}
|
||||
00624
|
||||
<a name="l00627"></a><a class="code" href="classeo_general_int_bounds.html#a8">00627</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_int_bounds.html#a8">isInBounds</a>(<span class="keywordtype">double</span> _x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a5">isInBounds</a>(_x);}
|
||||
00628
|
||||
<a name="l00631"></a><a class="code" href="classeo_general_int_bounds.html#a9">00631</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_int_bounds.html#a9">foldsInBounds</a>(<span class="keywordtype">double</span> & _x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a6">foldsInBounds</a>(_x);}
|
||||
00632
|
||||
<a name="l00635"></a><a class="code" href="classeo_general_int_bounds.html#a10">00635</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_int_bounds.html#a10">truncate</a>(<span class="keywordtype">double</span> & _x)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a8">truncate</a>(_x);}
|
||||
00636
|
||||
<a name="l00640"></a><a class="code" href="classeo_general_int_bounds.html#a11">00640</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_general_int_bounds.html#a11">minimum</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a10">minimum</a>();}
|
||||
<a name="l00644"></a><a class="code" href="classeo_general_int_bounds.html#a12">00644</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_general_int_bounds.html#a12">maximum</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a11">maximum</a>();}
|
||||
<a name="l00648"></a><a class="code" href="classeo_general_int_bounds.html#a13">00648</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_general_int_bounds.html#a13">range</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a12">range</a>();}
|
||||
00649
|
||||
<a name="l00653"></a><a class="code" href="classeo_general_int_bounds.html#a14">00653</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_general_int_bounds.html#a14">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a13">uniform</a>();}
|
||||
00654
|
||||
<a name="l00658"></a><a class="code" href="classeo_general_int_bounds.html#a15">00658</a> <span class="keyword">virtual</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> <a class="code" href="classeo_general_int_bounds.html#a15">random</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a14">random</a>();}
|
||||
00659
|
||||
<a name="l00661"></a><a class="code" href="classeo_general_int_bounds.html#a16">00661</a> <span class="keyword">virtual</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_general_int_bounds.html#a16">dup</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_int_bounds.html#a15">dup</a>();}
|
||||
00662
|
||||
<a name="l00664"></a><a class="code" href="classeo_general_int_bounds.html#a17">00664</a> <span class="keyword">const</span> <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> & <a class="code" href="classeo_general_int_bounds.html#a17">theBounds</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *repBound;}
|
||||
00665
|
||||
<a name="l00669"></a><a class="code" href="classeo_general_int_bounds.html#a18">00669</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_int_bounds.html#a18">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00670 <span class="keyword"> </span>{
|
||||
00671 repBound-><a class="code" href="classeo_printable.html#a1">printOn</a>(_os);
|
||||
00672 }
|
||||
00673
|
||||
<a name="l00675"></a><a class="code" href="classeo_general_int_bounds.html#a19">00675</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_int_bounds.html#a19">readFrom</a>(std::istream& _is)
|
||||
00676 {
|
||||
00677 std::string s;
|
||||
00678 _is >> s;
|
||||
00679 <span class="keywordflow">if</span> (repBound)
|
||||
00680 <span class="keyword">delete</span> repBound;
|
||||
00681 repBound = <a class="code" href="classeo_general_int_bounds.html#d0">getBoundsFromString</a>(s);
|
||||
00682 }
|
||||
00683
|
||||
00684 <span class="keyword">private</span>:
|
||||
00685 <span class="comment">// reading from a string</span>
|
||||
00686 <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * <a class="code" href="classeo_general_int_bounds.html#d0">getBoundsFromString</a>(std::string);
|
||||
00687
|
||||
00688 <a class="code" href="classeo_int_bounds.html">eoIntBounds</a> * repBound;
|
||||
00689 };
|
||||
00690
|
||||
00691
|
||||
00692 <span class="preprocessor">#endif</span>
|
||||
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Oct 19 05:06:36 2006 for EO by
|
||||
<a href="http://www.doxygen.org/index.html">
|
||||
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue