... |
... |
@@ -35,19 +35,19 @@
|
35 |
35 |
///\brief A class to provide a basic way to
|
36 |
36 |
///handle the comparison of numbers that are obtained
|
37 |
37 |
///as a result of a probably inexact computation.
|
38 |
38 |
///
|
39 |
39 |
///\ref Tolerance is a class to provide a basic way to
|
40 |
40 |
///handle the comparison of numbers that are obtained
|
41 |
41 |
///as a result of a probably inexact computation.
|
42 |
42 |
///
|
43 |
|
///This is an abstract class, it should be specialized for all numerical
|
44 |
|
///data types. These specialized classes like \ref Tolerance<double>
|
45 |
|
///may offer additional tuning parameters.
|
|
43 |
///This is an abstract class, it should be specialized for all
|
|
44 |
///numerical data types. These specialized classes like
|
|
45 |
///Tolerance<double> may offer additional tuning parameters.
|
46 |
46 |
///
|
47 |
47 |
///\sa Tolerance<float>
|
48 |
48 |
///\sa Tolerance<double>
|
49 |
49 |
///\sa Tolerance<long double>
|
50 |
50 |
///\sa Tolerance<int>
|
51 |
51 |
///\sa Tolerance<long long int>
|
52 |
52 |
///\sa Tolerance<unsigned int>
|
53 |
53 |
///\sa Tolerance<unsigned long long int>
|
... |
... |
@@ -112,17 +112,17 @@
|
112 |
112 |
void epsilon(Value e) {_epsilon=e;}
|
113 |
113 |
|
114 |
114 |
///Returns the default epsilon value.
|
115 |
115 |
static Value defaultEpsilon() {return def_epsilon;}
|
116 |
116 |
///Sets the default epsilon value.
|
117 |
117 |
static void defaultEpsilon(Value e) {def_epsilon=e;}
|
118 |
118 |
|
119 |
119 |
///\name Comparisons
|
120 |
|
///See \ref Tolerance for more details.
|
|
120 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
121 |
121 |
|
122 |
122 |
///@{
|
123 |
123 |
|
124 |
124 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
125 |
125 |
bool less(Value a,Value b) const {return a+_epsilon<b;}
|
126 |
126 |
///Returns \c true if \c a is \e surely different from \c b
|
127 |
127 |
bool different(Value a,Value b) const { return less(a,b)||less(b,a); }
|
128 |
128 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -163,17 +163,17 @@
|
163 |
163 |
void epsilon(Value e) {_epsilon=e;}
|
164 |
164 |
|
165 |
165 |
///Returns the default epsilon value.
|
166 |
166 |
static Value defaultEpsilon() {return def_epsilon;}
|
167 |
167 |
///Sets the default epsilon value.
|
168 |
168 |
static void defaultEpsilon(Value e) {def_epsilon=e;}
|
169 |
169 |
|
170 |
170 |
///\name Comparisons
|
171 |
|
///See \ref Tolerance for more details.
|
|
171 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
172 |
172 |
|
173 |
173 |
///@{
|
174 |
174 |
|
175 |
175 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
176 |
176 |
bool less(Value a,Value b) const {return a+_epsilon<b;}
|
177 |
177 |
///Returns \c true if \c a is \e surely different from \c b
|
178 |
178 |
bool different(Value a,Value b) const { return less(a,b)||less(b,a); }
|
179 |
179 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -214,17 +214,17 @@
|
214 |
214 |
void epsilon(Value e) {_epsilon=e;}
|
215 |
215 |
|
216 |
216 |
///Returns the default epsilon value.
|
217 |
217 |
static Value defaultEpsilon() {return def_epsilon;}
|
218 |
218 |
///Sets the default epsilon value.
|
219 |
219 |
static void defaultEpsilon(Value e) {def_epsilon=e;}
|
220 |
220 |
|
221 |
221 |
///\name Comparisons
|
222 |
|
///See \ref Tolerance for more details.
|
|
222 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
223 |
223 |
|
224 |
224 |
///@{
|
225 |
225 |
|
226 |
226 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
227 |
227 |
bool less(Value a,Value b) const {return a+_epsilon<b;}
|
228 |
228 |
///Returns \c true if \c a is \e surely different from \c b
|
229 |
229 |
bool different(Value a,Value b) const { return less(a,b)||less(b,a); }
|
230 |
230 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -247,17 +247,17 @@
|
247 |
247 |
template<>
|
248 |
248 |
class Tolerance<int>
|
249 |
249 |
{
|
250 |
250 |
public:
|
251 |
251 |
///\e
|
252 |
252 |
typedef int Value;
|
253 |
253 |
|
254 |
254 |
///\name Comparisons
|
255 |
|
///See \ref Tolerance for more details.
|
|
255 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
256 |
256 |
|
257 |
257 |
///@{
|
258 |
258 |
|
259 |
259 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
260 |
260 |
static bool less(Value a,Value b) { return a<b;}
|
261 |
261 |
///Returns \c true if \c a is \e surely different from \c b
|
262 |
262 |
static bool different(Value a,Value b) { return a!=b; }
|
263 |
263 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -270,27 +270,27 @@
|
270 |
270 |
///@}
|
271 |
271 |
|
272 |
272 |
///Returns zero
|
273 |
273 |
static Value zero() {return 0;}
|
274 |
274 |
};
|
275 |
275 |
|
276 |
276 |
///Unsigned integer specialization of Tolerance.
|
277 |
277 |
|
278 |
|
///Unsigned integer specialization of \ref Tolerance.
|
|
278 |
///Unsigned integer specialization of Tolerance.
|
279 |
279 |
///\sa Tolerance
|
280 |
280 |
template<>
|
281 |
281 |
class Tolerance<unsigned int>
|
282 |
282 |
{
|
283 |
283 |
public:
|
284 |
284 |
///\e
|
285 |
285 |
typedef unsigned int Value;
|
286 |
286 |
|
287 |
287 |
///\name Comparisons
|
288 |
|
///See \ref Tolerance for more details.
|
|
288 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
289 |
289 |
|
290 |
290 |
///@{
|
291 |
291 |
|
292 |
292 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
293 |
293 |
static bool less(Value a,Value b) { return a<b;}
|
294 |
294 |
///Returns \c true if \c a is \e surely different from \c b
|
295 |
295 |
static bool different(Value a,Value b) { return a!=b; }
|
296 |
296 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -314,17 +314,17 @@
|
314 |
314 |
template<>
|
315 |
315 |
class Tolerance<long int>
|
316 |
316 |
{
|
317 |
317 |
public:
|
318 |
318 |
///\e
|
319 |
319 |
typedef long int Value;
|
320 |
320 |
|
321 |
321 |
///\name Comparisons
|
322 |
|
///See \ref Tolerance for more details.
|
|
322 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
323 |
323 |
|
324 |
324 |
///@{
|
325 |
325 |
|
326 |
326 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
327 |
327 |
static bool less(Value a,Value b) { return a<b;}
|
328 |
328 |
///Returns \c true if \c a is \e surely different from \c b
|
329 |
329 |
static bool different(Value a,Value b) { return a!=b; }
|
330 |
330 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -337,27 +337,27 @@
|
337 |
337 |
///@}
|
338 |
338 |
|
339 |
339 |
///Returns zero
|
340 |
340 |
static Value zero() {return 0;}
|
341 |
341 |
};
|
342 |
342 |
|
343 |
343 |
///Unsigned long integer specialization of Tolerance.
|
344 |
344 |
|
345 |
|
///Unsigned long integer specialization of \ref Tolerance.
|
|
345 |
///Unsigned long integer specialization of Tolerance.
|
346 |
346 |
///\sa Tolerance
|
347 |
347 |
template<>
|
348 |
348 |
class Tolerance<unsigned long int>
|
349 |
349 |
{
|
350 |
350 |
public:
|
351 |
351 |
///\e
|
352 |
352 |
typedef unsigned long int Value;
|
353 |
353 |
|
354 |
354 |
///\name Comparisons
|
355 |
|
///See \ref Tolerance for more details.
|
|
355 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
356 |
356 |
|
357 |
357 |
///@{
|
358 |
358 |
|
359 |
359 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
360 |
360 |
static bool less(Value a,Value b) { return a<b;}
|
361 |
361 |
///Returns \c true if \c a is \e surely different from \c b
|
362 |
362 |
static bool different(Value a,Value b) { return a!=b; }
|
363 |
363 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -372,29 +372,29 @@
|
372 |
372 |
///Returns zero
|
373 |
373 |
static Value zero() {return 0;}
|
374 |
374 |
};
|
375 |
375 |
|
376 |
376 |
#if defined __GNUC__ && !defined __STRICT_ANSI__
|
377 |
377 |
|
378 |
378 |
///Long long integer specialization of Tolerance.
|
379 |
379 |
|
380 |
|
///Long long integer specialization of \ref Tolerance.
|
|
380 |
///Long long integer specialization of Tolerance.
|
381 |
381 |
///\warning This class (more exactly, type <tt>long long</tt>)
|
382 |
382 |
///is not ansi compatible.
|
383 |
383 |
///\sa Tolerance
|
384 |
384 |
template<>
|
385 |
385 |
class Tolerance<long long int>
|
386 |
386 |
{
|
387 |
387 |
public:
|
388 |
388 |
///\e
|
389 |
389 |
typedef long long int Value;
|
390 |
390 |
|
391 |
391 |
///\name Comparisons
|
392 |
|
///See \ref Tolerance for more details.
|
|
392 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
393 |
393 |
|
394 |
394 |
///@{
|
395 |
395 |
|
396 |
396 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
397 |
397 |
static bool less(Value a,Value b) { return a<b;}
|
398 |
398 |
///Returns \c true if \c a is \e surely different from \c b
|
399 |
399 |
static bool different(Value a,Value b) { return a!=b; }
|
400 |
400 |
///Returns \c true if \c a is \e surely positive
|
... |
... |
@@ -407,29 +407,29 @@
|
407 |
407 |
///@}
|
408 |
408 |
|
409 |
409 |
///Returns zero
|
410 |
410 |
static Value zero() {return 0;}
|
411 |
411 |
};
|
412 |
412 |
|
413 |
413 |
///Unsigned long long integer specialization of Tolerance.
|
414 |
414 |
|
415 |
|
///Unsigned long long integer specialization of \ref Tolerance.
|
|
415 |
///Unsigned long long integer specialization of Tolerance.
|
416 |
416 |
///\warning This class (more exactly, type <tt>unsigned long long</tt>)
|
417 |
417 |
///is not ansi compatible.
|
418 |
418 |
///\sa Tolerance
|
419 |
419 |
template<>
|
420 |
420 |
class Tolerance<unsigned long long int>
|
421 |
421 |
{
|
422 |
422 |
public:
|
423 |
423 |
///\e
|
424 |
424 |
typedef unsigned long long int Value;
|
425 |
425 |
|
426 |
426 |
///\name Comparisons
|
427 |
|
///See \ref Tolerance for more details.
|
|
427 |
///See \ref lemon::Tolerance "Tolerance" for more details.
|
428 |
428 |
|
429 |
429 |
///@{
|
430 |
430 |
|
431 |
431 |
///Returns \c true if \c a is \e surely strictly less than \c b
|
432 |
432 |
static bool less(Value a,Value b) { return a<b;}
|
433 |
433 |
///Returns \c true if \c a is \e surely different from \c b
|
434 |
434 |
static bool different(Value a,Value b) { return a!=b; }
|
435 |
435 |
///Returns \c true if \c a is \e surely positive
|