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();
69 friend std::istream& ::operator>><>(std::istream& is,
70 real_number<T>& self);
74 typedef real_number<T> self_type;
78 real_number(
const value_type& v);
79 real_number(
const self_type& that);
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;
102 template <
typename U>
110 value_type m_epsilon;
117 template <
typename T>
118 struct numeric_limits<
claw::real_number<T> > :
public numeric_limits<T>
121 template <
typename T>
137#include "claw/real_number.tpp"
Custom precision real numbers.
This is the main namespace.
This class generates an epsilon value of a given precision.