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
493
trunk/paradiseo-eo/doc/html/eo_real_bounds_8h-source.html
Normal file
493
trunk/paradiseo-eo/doc/html/eo_real_bounds_8h-source.html
Normal file
|
|
@ -0,0 +1,493 @@
|
|||
<!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: eoRealBounds.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>eoRealBounds.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">// eoRealBounds.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 _eoRealBounds_h</span>
|
||||
00028 <span class="preprocessor"></span><span class="preprocessor">#define _eoRealBounds_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_real_bounds.html">00075</a> <span class="keyword">class </span><a class="code" href="classeo_real_bounds.html">eoRealBounds</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_real_bounds.html">eoRealBounds</a>(){}
|
||||
00079
|
||||
00082 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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_real_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_real_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_real_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_real_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_real_bounds.html#a6">foldsInBounds</a>(<span class="keywordtype">double</span> &) <span class="keyword">const </span>= 0;
|
||||
00104
|
||||
00107 <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_bounds.html#a7">truncate</a>(<span class="keywordtype">double</span> &) <span class="keyword">const </span>= 0;
|
||||
00108
|
||||
00112 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_bounds.html#a8">minimum</a>() <span class="keyword">const </span>= 0 ;
|
||||
00116 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_bounds.html#a9">maximum</a>() <span class="keyword">const </span>= 0 ;
|
||||
00120 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_bounds.html#a10">range</a>() <span class="keyword">const </span>= 0;
|
||||
00121
|
||||
00125 <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_bounds.html#a11">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng) <span class="keyword">const </span>= 0;
|
||||
00126
|
||||
00128 <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_real_bounds.html#a12">dup</a>() <span class="keyword">const </span>= 0;
|
||||
00129 };
|
||||
00130
|
||||
<a name="l00133"></a><a class="code" href="classeo_real_no_bounds.html">00133</a> <span class="keyword">class </span><a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a> : <span class="keyword">public</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a>
|
||||
00134 {
|
||||
00135 <span class="keyword">public</span>:
|
||||
00136 <span class="keyword">virtual</span> ~<a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a>(){}
|
||||
00137
|
||||
<a name="l00138"></a><a class="code" href="classeo_real_no_bounds.html#a1">00138</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00139"></a><a class="code" href="classeo_real_no_bounds.html#a2">00139</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00140"></a><a class="code" href="classeo_real_no_bounds.html#a3">00140</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00141"></a><a class="code" href="classeo_real_no_bounds.html#a4">00141</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00142"></a><a class="code" href="classeo_real_no_bounds.html#a5">00142</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_no_bounds.html#a5">foldsInBounds</a>(<span class="keywordtype">double</span> &)<span class="keyword"> const </span>{<span class="keywordflow">return</span>;}
|
||||
<a name="l00143"></a><a class="code" href="classeo_real_no_bounds.html#a6">00143</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_no_bounds.html#a6">truncate</a>(<span class="keywordtype">double</span> &)<span class="keyword"> const </span>{<span class="keywordflow">return</span>;}
|
||||
<a name="l00144"></a><a class="code" href="classeo_real_no_bounds.html#a7">00144</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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>;}
|
||||
00145
|
||||
<a name="l00146"></a><a class="code" href="classeo_real_no_bounds.html#a8">00146</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_no_bounds.html#a8">minimum</a>()<span class="keyword"> const</span>
|
||||
00147 <span class="keyword"> </span>{
|
||||
00148 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get minimum of unbounded eoRealBounds"</span>);
|
||||
00149 }
|
||||
<a name="l00150"></a><a class="code" href="classeo_real_no_bounds.html#a9">00150</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_no_bounds.html#a9">maximum</a>()<span class="keyword"> const </span>
|
||||
00151 <span class="keyword"> </span>{
|
||||
00152 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get maximum of unbounded eoRealBounds"</span>);
|
||||
00153 }
|
||||
<a name="l00154"></a><a class="code" href="classeo_real_no_bounds.html#a10">00154</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_no_bounds.html#a10">range</a>()<span class="keyword"> const </span>
|
||||
00155 <span class="keyword"> </span>{
|
||||
00156 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of unbounded eoRealBounds"</span>);
|
||||
00157 }
|
||||
00158
|
||||
<a name="l00159"></a><a class="code" href="classeo_real_no_bounds.html#a11">00159</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_no_bounds.html#a11">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00160 <span class="keyword"> </span>{
|
||||
00161 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in unbounded eoRealBounds"</span>);
|
||||
00162 }
|
||||
00163
|
||||
00164 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00171"></a><a class="code" href="classeo_real_no_bounds.html#a12">00171</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_no_bounds.html#a12">readFrom</a>(std::istream& _is)
|
||||
00172 {
|
||||
00173 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoRealBounds::readFrom"</span>);
|
||||
00174 }
|
||||
00175
|
||||
<a name="l00180"></a><a class="code" href="classeo_real_no_bounds.html#a13">00180</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_no_bounds.html#a13">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00181 <span class="keyword"> </span>{
|
||||
00182 _os << <span class="stringliteral">"[-inf,+inf]"</span>;
|
||||
00183 }
|
||||
00184
|
||||
<a name="l00186"></a><a class="code" href="classeo_real_no_bounds.html#a14">00186</a> <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_real_no_bounds.html#a14">dup</a>()<span class="keyword"> const </span>
|
||||
00187 <span class="keyword"> </span>{
|
||||
00188 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a>(*<span class="keyword">this</span>);
|
||||
00189 }
|
||||
00190
|
||||
00191 };
|
||||
00192
|
||||
00193 <span class="comment">// one object for all - see eoRealBounds.cpp</span>
|
||||
00194 <span class="keyword">extern</span> <a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a> eoDummyRealNoBounds;
|
||||
00195
|
||||
<a name="l00199"></a><a class="code" href="classeo_real_interval.html">00199</a> <span class="keyword">class </span><a class="code" href="classeo_real_interval.html">eoRealInterval</a> : <span class="keyword">public</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a>
|
||||
00200 {
|
||||
00201 <span class="keyword">public</span> :
|
||||
00202 <span class="keyword">virtual</span> ~<a class="code" href="classeo_real_interval.html">eoRealInterval</a>(){}
|
||||
00203
|
||||
<a name="l00207"></a><a class="code" href="classeo_real_interval.html#a1">00207</a> <a class="code" href="classeo_real_interval.html#a1">eoRealInterval</a>(<span class="keywordtype">double</span> _min=0, <span class="keywordtype">double</span> _max=1) :
|
||||
00208 repMinimum(_min), repMaximum(_max), repRange(_max-_min)
|
||||
00209 {
|
||||
00210 <span class="keywordflow">if</span> (repRange<=0)
|
||||
00211 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Void range in eoRealBounds"</span>);
|
||||
00212 }
|
||||
00213
|
||||
00214 <span class="comment">// accessors </span>
|
||||
<a name="l00215"></a><a class="code" href="classeo_real_interval.html#a2">00215</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_interval.html#a2">minimum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMinimum; }
|
||||
<a name="l00216"></a><a class="code" href="classeo_real_interval.html#a3">00216</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_interval.html#a3">maximum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMaximum; }
|
||||
<a name="l00217"></a><a class="code" href="classeo_real_interval.html#a4">00217</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_interval.html#a4">range</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repRange; }
|
||||
00218
|
||||
00219 <span class="comment">// description</span>
|
||||
<a name="l00220"></a><a class="code" href="classeo_real_interval.html#a5">00220</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00221"></a><a class="code" href="classeo_real_interval.html#a6">00221</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00222"></a><a class="code" href="classeo_real_interval.html#a7">00222</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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="l00223"></a><a class="code" href="classeo_real_interval.html#a8">00223</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_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>;}
|
||||
00224
|
||||
<a name="l00225"></a><a class="code" href="classeo_real_interval.html#a9">00225</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_interval.html#a9">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00226 <span class="keyword"> </span>{
|
||||
00227 <span class="keywordflow">return</span> repMinimum + _rng.<a class="code" href="classeo_real_bounds.html#a11">uniform</a>(repRange);
|
||||
00228 }
|
||||
00229
|
||||
00230 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00231"></a><a class="code" href="classeo_real_interval.html#a10">00231</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_interval.html#a10">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00232 <span class="keyword"> </span>{
|
||||
00233 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00234 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00235 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00236 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00237 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00238 }
|
||||
00239
|
||||
00240 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00241"></a><a class="code" href="classeo_real_interval.html#a11">00241</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_interval.html#a11">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00242 <span class="keyword"> </span>{
|
||||
00243 <span class="keywordtype">long</span> iloc;
|
||||
00244 <span class="keywordtype">double</span> dlargloc = 2 * <a class="code" href="classeo_real_interval.html#a4">range</a>() ;
|
||||
00245
|
||||
00246 <span class="keywordflow">if</span> (fabs(_r) > 1.0E9) <span class="comment">// iloc too large!</span>
|
||||
00247 {
|
||||
00248 _r = <a class="code" href="classeo_real_interval.html#a9">uniform</a>();
|
||||
00249 <span class="keywordflow">return</span>;
|
||||
00250 }
|
||||
00251
|
||||
00252 <span class="keywordflow">if</span> ( (_r > <a class="code" href="classeo_real_interval.html#a3">maximum</a>()) )
|
||||
00253 {
|
||||
00254 iloc = (long) ( (_r-<a class="code" href="classeo_real_interval.html#a2">minimum</a>()) / dlargloc ) ;
|
||||
00255 _r -= dlargloc * iloc ;
|
||||
00256 <span class="keywordflow">if</span> ( _r > <a class="code" href="classeo_real_interval.html#a3">maximum</a>() )
|
||||
00257 _r = 2*<a class="code" href="classeo_real_interval.html#a3">maximum</a>() - _r ;
|
||||
00258 }
|
||||
00259
|
||||
00260 <span class="keywordflow">if</span> (_r < <a class="code" href="classeo_real_interval.html#a2">minimum</a>())
|
||||
00261 {
|
||||
00262 iloc = (long) ( (<a class="code" href="classeo_real_interval.html#a3">maximum</a>()-_r) / dlargloc ) ;
|
||||
00263 _r += dlargloc * iloc ;
|
||||
00264 <span class="keywordflow">if</span> (_r < <a class="code" href="classeo_real_interval.html#a2">minimum</a>())
|
||||
00265 _r = 2*<a class="code" href="classeo_real_interval.html#a2">minimum</a>() - _r ;
|
||||
00266 }
|
||||
00267 }
|
||||
00268
|
||||
00269 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00270"></a><a class="code" href="classeo_real_interval.html#a12">00270</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_interval.html#a12">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00271 <span class="keyword"> </span>{
|
||||
00272 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00273 _r = repMinimum;
|
||||
00274 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00275 _r = repMaximum;
|
||||
00276 <span class="keywordflow">return</span>;
|
||||
00277 }
|
||||
00278
|
||||
00279 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00286"></a><a class="code" href="classeo_real_interval.html#a13">00286</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_interval.html#a13">readFrom</a>(std::istream& _is)
|
||||
00287 {
|
||||
00288 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoRealInterval::readFrom"</span>);
|
||||
00289 }
|
||||
00290
|
||||
<a name="l00295"></a><a class="code" href="classeo_real_interval.html#a14">00295</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_interval.html#a14">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00296 <span class="keyword"> </span>{
|
||||
00297 _os << <span class="stringliteral">"["</span> << repMinimum << <span class="stringliteral">","</span> << repMaximum << <span class="stringliteral">"]"</span>;
|
||||
00298 }
|
||||
00299
|
||||
<a name="l00301"></a><a class="code" href="classeo_real_interval.html#a15">00301</a> <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_real_interval.html#a15">dup</a>()<span class="keyword"> const </span>
|
||||
00302 <span class="keyword"> </span>{
|
||||
00303 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_real_interval.html#a1">eoRealInterval</a>(*<span class="keyword">this</span>);
|
||||
00304 }
|
||||
00305
|
||||
00306 <span class="keyword">private</span> :
|
||||
00307 <span class="keywordtype">double</span> repMinimum;
|
||||
00308 <span class="keywordtype">double</span> repMaximum;
|
||||
00309 <span class="keywordtype">double</span> repRange; <span class="comment">// to minimize operations ???</span>
|
||||
00310 };
|
||||
00311
|
||||
<a name="l00315"></a><a class="code" href="classeo_real_below_bound.html">00315</a> <span class="keyword">class </span><a class="code" href="classeo_real_below_bound.html">eoRealBelowBound</a> : <span class="keyword">public</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a>
|
||||
00316 {
|
||||
00317 <span class="keyword">public</span> :
|
||||
00318 <span class="keyword">virtual</span> ~<a class="code" href="classeo_real_below_bound.html">eoRealBelowBound</a>(){}
|
||||
<a name="l00322"></a><a class="code" href="classeo_real_below_bound.html#a1">00322</a> <a class="code" href="classeo_real_below_bound.html#a1">eoRealBelowBound</a>(<span class="keywordtype">double</span> _min=0) :
|
||||
00323 repMinimum(_min)
|
||||
00324 {}
|
||||
00325
|
||||
00326 <span class="comment">// accessors </span>
|
||||
<a name="l00327"></a><a class="code" href="classeo_real_below_bound.html#a2">00327</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_below_bound.html#a2">minimum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMinimum; }
|
||||
00328
|
||||
<a name="l00329"></a><a class="code" href="classeo_real_below_bound.html#a3">00329</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_below_bound.html#a3">maximum</a>()<span class="keyword"> const </span>
|
||||
00330 <span class="keyword"> </span>{
|
||||
00331 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get maximum of eoRealBelowBound"</span>);
|
||||
00332 }
|
||||
<a name="l00333"></a><a class="code" href="classeo_real_below_bound.html#a4">00333</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_below_bound.html#a4">range</a>()<span class="keyword"> const </span>
|
||||
00334 <span class="keyword"> </span>{
|
||||
00335 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of eoRealBelowBound"</span>);
|
||||
00336 }
|
||||
00337
|
||||
00338 <span class="comment">// random generators</span>
|
||||
<a name="l00339"></a><a class="code" href="classeo_real_below_bound.html#a5">00339</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_below_bound.html#a5">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00340 <span class="keyword"> </span>{
|
||||
00341 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoRealBelowBound"</span>);
|
||||
00342 }
|
||||
00343
|
||||
00344 <span class="comment">// description</span>
|
||||
<a name="l00345"></a><a class="code" href="classeo_real_below_bound.html#a6">00345</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_below_bound.html#a6">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00346"></a><a class="code" href="classeo_real_below_bound.html#a7">00346</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_below_bound.html#a7">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00347"></a><a class="code" href="classeo_real_below_bound.html#a8">00347</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_below_bound.html#a8">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
<a name="l00348"></a><a class="code" href="classeo_real_below_bound.html#a9">00348</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_below_bound.html#a9">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
00349
|
||||
00350 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00351"></a><a class="code" href="classeo_real_below_bound.html#a10">00351</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_below_bound.html#a10">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00352 <span class="keyword"> </span>{
|
||||
00353 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00354 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00355 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00356 }
|
||||
00357
|
||||
00358 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00359"></a><a class="code" href="classeo_real_below_bound.html#a11">00359</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_below_bound.html#a11">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00360 <span class="keyword"> </span>{
|
||||
00361 <span class="comment">// easy as a pie: symmetry w.r.t. minimum</span>
|
||||
00362 <span class="keywordflow">if</span> (_r < repMinimum) <span class="comment">// nothing to do otherwise</span>
|
||||
00363 _r = 2*repMinimum - _r;
|
||||
00364 return ;
|
||||
00365 }
|
||||
00366
|
||||
00367 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00368"></a><a class="code" href="classeo_real_below_bound.html#a12">00368</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_below_bound.html#a12">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00369 <span class="keyword"> </span>{
|
||||
00370 <span class="keywordflow">if</span> (_r < repMinimum)
|
||||
00371 _r = repMinimum;
|
||||
00372 <span class="keywordflow">return</span>;
|
||||
00373 }
|
||||
00374
|
||||
00375 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00382"></a><a class="code" href="classeo_real_below_bound.html#a13">00382</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_below_bound.html#a13">readFrom</a>(std::istream& _is)
|
||||
00383 {
|
||||
00384 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoRealBelowBound::readFrom"</span>);
|
||||
00385 }
|
||||
00386
|
||||
<a name="l00391"></a><a class="code" href="classeo_real_below_bound.html#a14">00391</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_below_bound.html#a14">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00392 <span class="keyword"> </span>{
|
||||
00393 _os << <span class="stringliteral">"["</span> << repMinimum << <span class="stringliteral">",+inf]"</span>;
|
||||
00394 }
|
||||
00395
|
||||
<a name="l00397"></a><a class="code" href="classeo_real_below_bound.html#a15">00397</a> <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_real_below_bound.html#a15">dup</a>()<span class="keyword"> const </span>
|
||||
00398 <span class="keyword"> </span>{
|
||||
00399 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_real_below_bound.html#a1">eoRealBelowBound</a>(*<span class="keyword">this</span>);
|
||||
00400 }
|
||||
00401
|
||||
00402 <span class="keyword">private</span> :
|
||||
00403 <span class="keywordtype">double</span> repMinimum;
|
||||
00404 };
|
||||
00405
|
||||
<a name="l00409"></a><a class="code" href="classeo_real_above_bound.html">00409</a> <span class="keyword">class </span><a class="code" href="classeo_real_above_bound.html">eoRealAboveBound</a> : <span class="keyword">public</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a>
|
||||
00410 {
|
||||
00411 <span class="keyword">public</span> :
|
||||
00412 <span class="keyword">virtual</span> ~<a class="code" href="classeo_real_above_bound.html">eoRealAboveBound</a>(){}
|
||||
00413
|
||||
<a name="l00417"></a><a class="code" href="classeo_real_above_bound.html#a1">00417</a> <a class="code" href="classeo_real_above_bound.html#a1">eoRealAboveBound</a>(<span class="keywordtype">double</span> _max=0) :
|
||||
00418 repMaximum(_max)
|
||||
00419 {}
|
||||
00420
|
||||
00421 <span class="comment">// accessors </span>
|
||||
<a name="l00422"></a><a class="code" href="classeo_real_above_bound.html#a2">00422</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_above_bound.html#a2">maximum</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> repMaximum; }
|
||||
00423
|
||||
<a name="l00424"></a><a class="code" href="classeo_real_above_bound.html#a3">00424</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_above_bound.html#a3">minimum</a>()<span class="keyword"> const </span>
|
||||
00425 <span class="keyword"> </span>{
|
||||
00426 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get minimum of eoRealAboveBound"</span>);
|
||||
00427 }
|
||||
<a name="l00428"></a><a class="code" href="classeo_real_above_bound.html#a4">00428</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_above_bound.html#a4">range</a>()<span class="keyword"> const </span>
|
||||
00429 <span class="keyword"> </span>{
|
||||
00430 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to get range of eoRealAboveBound"</span>);
|
||||
00431 }
|
||||
00432
|
||||
00433 <span class="comment">// random generators</span>
|
||||
<a name="l00434"></a><a class="code" href="classeo_real_above_bound.html#a5">00434</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_real_above_bound.html#a5">uniform</a>(<a class="code" href="classeo_rng.html">eoRng</a> & _rng = eo::rng)<span class="keyword"> const </span>
|
||||
00435 <span class="keyword"> </span>{
|
||||
00436 <span class="keywordflow">throw</span> std::logic_error(<span class="stringliteral">"Trying to generate uniform values in eoRealAboveBound"</span>);
|
||||
00437 }
|
||||
00438
|
||||
00439 <span class="comment">// description</span>
|
||||
<a name="l00440"></a><a class="code" href="classeo_real_above_bound.html#a6">00440</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_above_bound.html#a6">isBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00441"></a><a class="code" href="classeo_real_above_bound.html#a7">00441</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_above_bound.html#a7">hasNoBoundAtAll</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00442"></a><a class="code" href="classeo_real_above_bound.html#a8">00442</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_above_bound.html#a8">isMinBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">false</span>;}
|
||||
<a name="l00443"></a><a class="code" href="classeo_real_above_bound.html#a9">00443</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_above_bound.html#a9">isMaxBounded</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="keyword">true</span>;}
|
||||
00444
|
||||
00445 <span class="comment">// says if a given double is within the bounds</span>
|
||||
<a name="l00446"></a><a class="code" href="classeo_real_above_bound.html#a10">00446</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_real_above_bound.html#a10">isInBounds</a>(<span class="keywordtype">double</span> _r)<span class="keyword"> const </span>
|
||||
00447 <span class="keyword"> </span>{
|
||||
00448 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00449 <span class="keywordflow">return</span> <span class="keyword">false</span>;
|
||||
00450 <span class="keywordflow">return</span> <span class="keyword">true</span>;
|
||||
00451 }
|
||||
00452
|
||||
00453 <span class="comment">// folds a value into bounds</span>
|
||||
<a name="l00454"></a><a class="code" href="classeo_real_above_bound.html#a11">00454</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_above_bound.html#a11">foldsInBounds</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00455 <span class="keyword"> </span>{
|
||||
00456 <span class="comment">// easy as a pie: symmetry w.r.t. maximum</span>
|
||||
00457 <span class="keywordflow">if</span> (_r > repMaximum) <span class="comment">// nothing to do otherwise</span>
|
||||
00458 _r = 2*repMaximum - _r;
|
||||
00459 return ;
|
||||
00460 }
|
||||
00461
|
||||
00462 <span class="comment">// truncates to the bounds</span>
|
||||
<a name="l00463"></a><a class="code" href="classeo_real_above_bound.html#a12">00463</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_above_bound.html#a12">truncate</a>(<span class="keywordtype">double</span> & _r)<span class="keyword"> const </span>
|
||||
00464 <span class="keyword"> </span>{
|
||||
00465 <span class="keywordflow">if</span> (_r > repMaximum)
|
||||
00466 _r = repMaximum;
|
||||
00467 <span class="keywordflow">return</span>;
|
||||
00468 }
|
||||
00469
|
||||
00470 <span class="comment">// methods from eoPersistent</span>
|
||||
<a name="l00477"></a><a class="code" href="classeo_real_above_bound.html#a13">00477</a> <span class="comment"></span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_above_bound.html#a13">readFrom</a>(std::istream& _is)
|
||||
00478 {
|
||||
00479 <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">"Should not use eoRealAboveBound::readFrom"</span>);
|
||||
00480 }
|
||||
00481
|
||||
<a name="l00486"></a><a class="code" href="classeo_real_above_bound.html#a14">00486</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_real_above_bound.html#a14">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00487 <span class="keyword"> </span>{
|
||||
00488 _os << <span class="stringliteral">"[-inf,"</span> << repMaximum << <span class="stringliteral">"]"</span>;
|
||||
00489 }
|
||||
00490
|
||||
<a name="l00492"></a><a class="code" href="classeo_real_above_bound.html#a15">00492</a> <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_real_above_bound.html#a15">dup</a>()<span class="keyword"> const </span>
|
||||
00493 <span class="keyword"> </span>{
|
||||
00494 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classeo_real_above_bound.html#a1">eoRealAboveBound</a>(*<span class="keyword">this</span>);
|
||||
00495 }
|
||||
00496
|
||||
00497 <span class="keyword">private</span> :
|
||||
00498 <span class="keywordtype">double</span> repMaximum;
|
||||
00499 };
|
||||
00500
|
||||
00502
|
||||
<a name="l00506"></a><a class="code" href="classeo_general_real_bounds.html">00506</a> <span class="keyword">class </span><a class="code" href="classeo_general_real_bounds.html">eoGeneralRealBounds</a> : <span class="keyword">public</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a>
|
||||
00507 {
|
||||
00508 <span class="keyword">public</span>:
|
||||
<a name="l00510"></a><a class="code" href="classeo_general_real_bounds.html#a0">00510</a> <a class="code" href="classeo_general_real_bounds.html#a0">eoGeneralRealBounds</a>(std::string _s = <span class="stringliteral">"[-infinity,+infinity]"</span>)
|
||||
00511 {
|
||||
00512 repBound = <a class="code" href="classeo_general_real_bounds.html#d0">getBoundsFromString</a>(_s);
|
||||
00513 }
|
||||
00514
|
||||
<a name="l00516"></a><a class="code" href="classeo_general_real_bounds.html#a1">00516</a> <a class="code" href="classeo_general_real_bounds.html#a0">eoGeneralRealBounds</a>(<span class="keyword">const</span> <a class="code" href="classeo_general_real_bounds.html">eoGeneralRealBounds</a> & _b):<a class="code" href="classeo_real_bounds.html">eoRealBounds</a>(_b)
|
||||
00517 {
|
||||
00518 <span class="comment">// replicate the embedded bound (I'm pretty sure there is another</span>
|
||||
00519 <span class="comment">// way to do that !!!</span>
|
||||
00520
|
||||
00521 <span class="keywordtype">bool</span> minBounded = _b.<a class="code" href="classeo_general_real_bounds.html#a6">isMinBounded</a>();
|
||||
00522 <span class="keywordtype">bool</span> maxBounded = _b.<a class="code" href="classeo_general_real_bounds.html#a7">isMaxBounded</a>();
|
||||
00523 <span class="keywordtype">double</span> minimum, maximum;
|
||||
00524 <span class="keyword">const</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> & bb = _b.<a class="code" href="classeo_general_real_bounds.html#a16">theBounds</a>();
|
||||
00525 <span class="keywordflow">if</span> (minBounded) minimum = bb.<a class="code" href="classeo_real_bounds.html#a8">minimum</a>();
|
||||
00526 <span class="keywordflow">if</span> (maxBounded) maximum = bb.<a class="code" href="classeo_real_bounds.html#a9">maximum</a>();
|
||||
00527
|
||||
00528 <span class="keywordflow">if</span> (minBounded && maxBounded)
|
||||
00529 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_interval.html">eoRealInterval</a>(minimum, maximum);
|
||||
00530 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && !maxBounded) <span class="comment">// no bound at all</span>
|
||||
00531 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a>;
|
||||
00532 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && maxBounded)
|
||||
00533 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_above_bound.html">eoRealAboveBound</a>(maximum);
|
||||
00534 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minBounded && !maxBounded)
|
||||
00535 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_below_bound.html">eoRealBelowBound</a>(minimum);
|
||||
00536 }
|
||||
00537
|
||||
00538 <a class="code" href="classeo_general_real_bounds.html">eoGeneralRealBounds</a>& operator=(<span class="keyword">const</span> <a class="code" href="classeo_general_real_bounds.html">eoGeneralRealBounds</a>& _b)
|
||||
00539 {
|
||||
00540 <span class="comment">// replicate the embedded bound (I'm pretty sure there is another</span>
|
||||
00541 <span class="comment">// way to do that !!!</span>
|
||||
00542
|
||||
00543 <span class="keywordtype">bool</span> minBounded = _b.<a class="code" href="classeo_general_real_bounds.html#a6">isMinBounded</a>();
|
||||
00544 <span class="keywordtype">bool</span> maxBounded = _b.<a class="code" href="classeo_general_real_bounds.html#a7">isMaxBounded</a>();
|
||||
00545 <span class="keywordtype">double</span> minimum, maximum;
|
||||
00546 <span class="keyword">const</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> & bb = _b.<a class="code" href="classeo_general_real_bounds.html#a16">theBounds</a>();
|
||||
00547 <span class="keywordflow">if</span> (minBounded) minimum = bb.<a class="code" href="classeo_real_bounds.html#a8">minimum</a>();
|
||||
00548 <span class="keywordflow">if</span> (maxBounded) maximum = bb.<a class="code" href="classeo_real_bounds.html#a9">maximum</a>();
|
||||
00549
|
||||
00550 <span class="comment">// first delete the embedded bounds if necessary</span>
|
||||
00551 <span class="keywordflow">if</span> (repBound)
|
||||
00552 <span class="keyword">delete</span> repBound;
|
||||
00553 <span class="comment">// now reallocate</span>
|
||||
00554 <span class="keywordflow">if</span> (minBounded && maxBounded)
|
||||
00555 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_interval.html">eoRealInterval</a>(minimum, maximum);
|
||||
00556 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && !maxBounded) <span class="comment">// no bound at all</span>
|
||||
00557 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_no_bounds.html">eoRealNoBounds</a>;
|
||||
00558 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!minBounded && maxBounded)
|
||||
00559 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_above_bound.html">eoRealAboveBound</a>(maximum);
|
||||
00560 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (minBounded && !maxBounded)
|
||||
00561 repBound = <span class="keyword">new</span> <a class="code" href="classeo_real_below_bound.html">eoRealBelowBound</a>(minimum);
|
||||
00562 <span class="keywordflow">return</span> (*this);
|
||||
00563 }
|
||||
00564
|
||||
00565
|
||||
<a name="l00567"></a><a class="code" href="classeo_general_real_bounds.html#a3">00567</a> <a class="code" href="classeo_general_real_bounds.html#a3">~eoGeneralRealBounds</a>()
|
||||
00568 {
|
||||
00569 <span class="keyword">delete</span> repBound;
|
||||
00570 }
|
||||
00571
|
||||
00573
|
||||
<a name="l00575"></a><a class="code" href="classeo_general_real_bounds.html#a4">00575</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a1">isBounded</a>();}
|
||||
00576
|
||||
<a name="l00580"></a><a class="code" href="classeo_general_real_bounds.html#a5">00580</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a2">hasNoBoundAtAll</a>();}
|
||||
00581
|
||||
<a name="l00584"></a><a class="code" href="classeo_general_real_bounds.html#a6">00584</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a3">isMinBounded</a>();}
|
||||
00585
|
||||
<a name="l00588"></a><a class="code" href="classeo_general_real_bounds.html#a7">00588</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a4">isMaxBounded</a>();}
|
||||
00589
|
||||
<a name="l00592"></a><a class="code" href="classeo_general_real_bounds.html#a8">00592</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a5">isInBounds</a>(_x);}
|
||||
00593
|
||||
<a name="l00596"></a><a class="code" href="classeo_general_real_bounds.html#a9">00596</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a6">foldsInBounds</a>(_x);}
|
||||
00597
|
||||
<a name="l00600"></a><a class="code" href="classeo_general_real_bounds.html#a10">00600</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a7">truncate</a>(_x);}
|
||||
00601
|
||||
<a name="l00605"></a><a class="code" href="classeo_general_real_bounds.html#a11">00605</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_general_real_bounds.html#a11">minimum</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_real_bounds.html#a8">minimum</a>();}
|
||||
<a name="l00609"></a><a class="code" href="classeo_general_real_bounds.html#a12">00609</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_general_real_bounds.html#a12">maximum</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_real_bounds.html#a9">maximum</a>();}
|
||||
<a name="l00613"></a><a class="code" href="classeo_general_real_bounds.html#a13">00613</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_general_real_bounds.html#a13">range</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_real_bounds.html#a10">range</a>();}
|
||||
00614
|
||||
<a name="l00618"></a><a class="code" href="classeo_general_real_bounds.html#a14">00618</a> <span class="keyword">virtual</span> <span class="keywordtype">double</span> <a class="code" href="classeo_general_real_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_real_bounds.html#a11">uniform</a>();}
|
||||
00619
|
||||
<a name="l00621"></a><a class="code" href="classeo_general_real_bounds.html#a15">00621</a> <span class="keyword">virtual</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_general_real_bounds.html#a15">dup</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> repBound-><a class="code" href="classeo_real_bounds.html#a12">dup</a>();}
|
||||
00622
|
||||
<a name="l00624"></a><a class="code" href="classeo_general_real_bounds.html#a16">00624</a> <span class="keyword">const</span> <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> & <a class="code" href="classeo_general_real_bounds.html#a16">theBounds</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *repBound;}
|
||||
00625
|
||||
<a name="l00629"></a><a class="code" href="classeo_general_real_bounds.html#a17">00629</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_real_bounds.html#a17">printOn</a>(std::ostream& _os)<span class="keyword"> const</span>
|
||||
00630 <span class="keyword"> </span>{
|
||||
00631 repBound-><a class="code" href="classeo_printable.html#a1">printOn</a>(_os);
|
||||
00632 }
|
||||
00633
|
||||
<a name="l00635"></a><a class="code" href="classeo_general_real_bounds.html#a18">00635</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classeo_general_real_bounds.html#a18">readFrom</a>(std::istream& _is)
|
||||
00636 {
|
||||
00637 std::string s;
|
||||
00638 _is >> s;
|
||||
00639 <span class="keywordflow">if</span> (repBound)
|
||||
00640 <span class="keyword">delete</span> repBound;
|
||||
00641 repBound = <a class="code" href="classeo_general_real_bounds.html#d0">getBoundsFromString</a>(s);
|
||||
00642 }
|
||||
00643
|
||||
00644 <span class="keyword">private</span>:
|
||||
00645 <span class="comment">// reading from a string</span>
|
||||
00646 <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * <a class="code" href="classeo_general_real_bounds.html#d0">getBoundsFromString</a>(std::string);
|
||||
00647
|
||||
00648 <a class="code" href="classeo_real_bounds.html">eoRealBounds</a> * repBound;
|
||||
00649 };
|
||||
00650
|
||||
00651
|
||||
00652 <span class="preprocessor">#endif</span>
|
||||
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu Oct 19 05:06:37 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