28 #ifndef GUM_RATIONAL_H 29 #define GUM_RATIONAL_H 36 #include <agrum/tools/core/math/math_utils.h> 40 typedef __int64 int64_t;
41 typedef unsigned __int64 uint64_t;
57 template <
typename GUM_SCALAR >
82 static void farey(int64_t& numerator,
84 const GUM_SCALAR& number,
85 const int64_t& den_max = 1000000L,
86 const GUM_SCALAR& zero = 1e-6);
110 int64_t& denominator,
111 const GUM_SCALAR& number,
112 const double& zero = 1e-6);
131 int64_t& denominator,
132 const GUM_SCALAR& number,
133 const int64_t& den_max = 1000000);
141 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 142 # ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 146 #ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 147 # ifndef GUM_NO_EXTERN_TEMPLATE_CLASS 148 extern template class gum::
Rational<
long double >;
154 #include <agrum/tools/core/math/rational_tpl.h> static void continuedFracBest(int64_t &numerator, int64_t &denominator, const GUM_SCALAR &number, const int64_t &den_max=1000000)
Find the best rational approximation.
Class template used to approximate decimal numbers by rationals.
static void farey(int64_t &numerator, int64_t &denominator, const GUM_SCALAR &number, const int64_t &den_max=1000000L, const GUM_SCALAR &zero=1e-6)
Find the rational close enough to a given ( decimal ) number in [-1,1] and whose denominator is not h...
static void continuedFracFirst(int64_t &numerator, int64_t &denominator, const GUM_SCALAR &number, const double &zero=1e-6)
Find the first best rational approximation.