MPFR_HOT_FUNCTION_ATTR void mpfr_clear (mpfr_ptr m) { (*__gmp_free_func) (MPFR_GET_REAL_PTR (m), MPFR_MALLOC_SIZE (MPFR_GET_ALLOC_SIZE (m))); MPFR_MANT (m) = (mp_limb_t *) 0; }
MPFR_HOT_FUNCTION_ATTR void mpfr_set_prec (mpfr_ptr x, mpfr_prec_t p) { mp_size_t xsize, xoldsize; mpfr_limb_ptr tmp; /* first, check if p is correct */ MPFR_ASSERTN (MPFR_PREC_COND (p)); /* Calculate the new number of limbs */ xsize = MPFR_PREC2LIMBS (p); /* Realloc only if the new size is greater than the old */ xoldsize = MPFR_GET_ALLOC_SIZE (x); if (MPFR_UNLIKELY (xsize > xoldsize)) { tmp = (mpfr_limb_ptr) (*__gmp_reallocate_func) (MPFR_GET_REAL_PTR(x), MPFR_MALLOC_SIZE(xoldsize), MPFR_MALLOC_SIZE(xsize)); MPFR_SET_MANT_PTR(x, tmp); MPFR_SET_ALLOC_SIZE(x, xsize); } MPFR_PREC (x) = p; MPFR_SET_NAN (x); /* initializes to NaN */ }