30 #ifndef __CLAW_REAL_NUMBER_HPP__
31 #define __CLAW_REAL_NUMBER_HPP__
56 return std::abs(v) <= 1 ?
57 std::numeric_limits<T>::epsilon() :
58 std::abs(v) * std::numeric_limits<T>::epsilon();
70 std::istream& ::operator>> <>( std::istream& is,
real_number<T>& self );
81 self_type
abs()
const;
83 bool operator<(
const self_type& that )
const;
84 bool operator<=(
const self_type& that )
const;
85 bool operator>(
const self_type& that )
const;
86 bool operator>=(
const self_type& that )
const;
87 bool operator==(
const self_type& that )
const;
88 bool operator!=(
const self_type& that )
const;
90 self_type
operator+(
const self_type& that )
const;
91 self_type
operator-(
const self_type& that )
const;
92 self_type
operator*(
const self_type& that )
const;
93 self_type
operator/(
const self_type& that )
const;
95 self_type&
operator+=(
const self_type& that );
96 self_type&
operator-=(
const self_type& that );
97 self_type&
operator*=(
const self_type& that );
98 self_type&
operator/=(
const self_type& that );
100 std::ostream&
output( std::ostream& os )
const;
110 value_type m_epsilon;
118 struct numeric_limits< claw::real_number<T> >:
119 public numeric_limits<T>
136 std::ostream& operator<<( std::ostream& os, const claw::real_number<T>& self );
142 #endif // __CLAW_REAL_NUMBER_HPP__