MLPACK
1.0.4
|
00001 00022 #ifndef __MLPACK_CORE_MATH_RANGE_HPP 00023 #define __MLPACK_CORE_MATH_RANGE_HPP 00024 00025 namespace mlpack { 00026 namespace math { 00027 00031 class Range 00032 { 00033 private: 00034 double lo; 00035 double hi; 00036 00037 public: 00039 inline Range(); 00040 00041 /*** 00042 * Initialize a range to enclose only the given point (lo = point, hi = 00043 * point). 00044 * 00045 * @param point Point that this range will enclose. 00046 */ 00047 inline Range(const double point); 00048 00055 inline Range(const double lo, const double hi); 00056 00058 inline double Lo() const { return lo; } 00060 inline double& Lo() { return lo; } 00061 00063 inline double Hi() const { return hi; } 00065 inline double& Hi() { return hi; } 00066 00070 inline double Width() const; 00071 00075 inline double Mid() const; 00076 00082 inline Range& operator|=(const Range& rhs); 00083 00089 inline Range operator|(const Range& rhs) const; 00090 00097 inline Range& operator&=(const Range& rhs); 00098 00105 inline Range operator&(const Range& rhs) const; 00106 00112 inline Range& operator*=(const double d); 00113 00119 inline Range operator*(const double d) const; 00120 00126 friend inline Range operator*(const double d, const Range& r); // Symmetric. 00127 00133 inline bool operator==(const Range& rhs) const; 00134 00140 inline bool operator!=(const Range& rhs) const; 00141 00148 inline bool operator<(const Range& rhs) const; 00149 00156 inline bool operator>(const Range& rhs) const; 00157 00163 inline bool Contains(const double d) const; 00164 00172 inline bool Contains(const Range& r) const; 00173 00177 inline std::string ToString() const; 00178 00179 }; 00180 00181 }; // namespace math 00182 }; // namespace mlpack 00183 00184 // Include inlined implementation. 00185 #include "range_impl.hpp" 00186 00187 #endif // __MLPACK_CORE_MATH_RANGE_HPP