40 #ifdef GECODE_HAS_MPFR
45 namespace Gecode {
namespace Float {
48 typedef int mpfr_func(mpfr_t,
const __mpfr_struct*, mp_rnd_t);
54 mpfr_init_set_d(xx,
x, GMP_RNDN);
62 #define GECODE_GENR_FUNC(name) \
63 FloatNum Rounding::name##_down(FloatNum x) { \
64 return invoke_mpfr(x, mpfr_##name, GMP_RNDD); \
66 FloatNum Rounding::name##_up(FloatNum x) { \
67 return invoke_mpfr(x, mpfr_##name, GMP_RNDU); \
84 #undef GECODE_GENR_FUNC
Node * x
Pointer to corresponding Boolean expression node.
double FloatNum
Floating point number base type.
int mpfr_func(mpfr_t, const __mpfr_struct *, mp_rnd_t)
Type signatur of mpfr function.
double invoke_mpfr(FloatNum x, mpfr_func f, mp_rnd_t r)
Routine to call mpfr function with proper rounding.
#define GECODE_GENR_FUNC(name)
Define mpfr functions with proper rounding.