OpenWalnut
1.3.1
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
src
core
common
WLimits.h
1
//---------------------------------------------------------------------------
2
//
3
// Project: OpenWalnut ( http://www.openwalnut.org )
4
//
5
// Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6
// For more information see http://www.openwalnut.org/copying
7
//
8
// This file is part of OpenWalnut.
9
//
10
// OpenWalnut is free software: you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as published by
12
// the Free Software Foundation, either version 3 of the License, or
13
// (at your option) any later version.
14
//
15
// OpenWalnut is distributed in the hope that it will be useful,
16
// but WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
// GNU Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public License
21
// along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22
//
23
//---------------------------------------------------------------------------
24
25
#ifndef WLIMITS_H
26
#define WLIMITS_H
27
28
#include <stdint.h>
// since <cstdint> is part of c++0x upcoming standard
29
30
#include <cstddef>
31
32
#include <boost/math/special_functions/fpclassify.hpp>
// isnan, isinf
33
34
/**
35
* Project wide limits for different quantities.
36
*/
37
namespace
wlimits
38
{
39
extern
const
double
MAX_DOUBLE
;
//!< Maximum double value
40
41
extern
const
float
MAX_FLOAT
;
//!< Maximum float value
42
43
extern
const
size_t
MAX_SIZE_T
;
//!< Maximum size value
44
45
extern
const
int32_t
MAX_INT32_T
;
//!< Maximum int32_t value
46
47
extern
const
double
MIN_DOUBLE
;
//!< Positive minimum double value
48
49
/**
50
* Smallest double such: 1.0 + DBL_EPS == 1.0 is still true.
51
*/
52
extern
const
double
DBL_EPS
;
53
54
/**
55
* Smallest float such: 1.0 + FLT_EPS == 1.0 is still true.
56
*/
57
extern
const
float
FLT_EPS
;
58
59
/**
60
* Determines if a number is considered as NaN (aka Not a Number) or not.
61
*
62
* \note The reason for using here a wrapper to cmath's isnan is that it is only included in C99 which is not part of any existing C++ standard yet.
63
*
64
* \param value The value to be checked
65
*
66
* \return True if the value is a NaN, false otherwise.
67
*/
68
template
<
typename
T >
bool
isNaN
(
T
value );
69
70
/**
71
* Determines if a number is considered as infinity or not.
72
*
73
* \note The reason for using here a wrapper to cmath's isinf is that it is only included in C99 which is not part of any existing C++ standard yet.
74
*
75
* \param value The value to be checked
76
*
77
* \return True if the value is infinity, false otherwise.
78
*/
79
template
<
typename
T >
bool
isInf
(
T
value );
80
}
81
82
template
<
typename
T >
bool
wlimits::isNaN
(
T
value )
83
{
84
return
boost::math::isnan( value );
85
}
86
87
template
<
typename
T >
bool
wlimits::isInf
(
T
value )
88
{
89
return
boost::math::isinf( value );
90
}
91
92
#endif // WLIMITS_H
Generated by
1.8.4