void mpfr_free_cache (void) { mpfr_clear_cache (__gmpfr_cache_const_pi); mpfr_clear_cache (__gmpfr_cache_const_log2); mpfr_clear_cache (__gmpfr_cache_const_euler); }
void mpfr_free_cache (void) { mpfr_clear_cache (__gmpfr_cache_const_pi); mpfr_clear_cache (__gmpfr_cache_const_log2); mpfr_clear_cache (__gmpfr_cache_const_euler); mpfr_clear_cache (__gmpfr_cache_const_catalan); /* free_l2b (); */ }
/* Theses caches may be global to all threads or local to the current one. */ static void mpfr_free_const_caches (void) { #ifndef MPFR_USE_LOGGING mpfr_clear_cache (__gmpfr_cache_const_pi); mpfr_clear_cache (__gmpfr_cache_const_log2); #else mpfr_clear_cache (__gmpfr_normal_pi); mpfr_clear_cache (__gmpfr_normal_log2); mpfr_clear_cache (__gmpfr_logging_pi); mpfr_clear_cache (__gmpfr_logging_log2); #endif mpfr_clear_cache (__gmpfr_cache_const_euler); mpfr_clear_cache (__gmpfr_cache_const_catalan); }
static void check (mp_prec_t p0, mp_prec_t p1) { mpfr_t x, y, z; mp_rnd_t rnd; mpfr_init (x); mpfr_init (y); mpfr_init2 (z, p1 + 10); mpfr_const_log2 (z, GMP_RNDN); mpfr_clear_cache (__gmpfr_cache_const_log2); for (; p0<=p1; p0++) { mpfr_set_prec (x, p0); mpfr_set_prec (y, p0); { rnd = (mp_rnd_t) RND_RAND (); mpfr_const_log2 (x, rnd); mpfr_set (y, z, rnd); if (mpfr_cmp (x, y) && mpfr_can_round (z, mpfr_get_prec(z), GMP_RNDN, rnd, p0)) { printf ("mpfr_const_log2 fails for prec=%u, rnd=%s\n", (unsigned int) p0, mpfr_print_rnd_mode (rnd)); printf ("expected "); mpfr_out_str (stdout, 2, 0, y, GMP_RNDN); printf ("\ngot "); mpfr_out_str (stdout, 2, 0, x, GMP_RNDN); printf ("\n"); exit (1); } } } mpfr_clear (x); mpfr_clear (y); mpfr_clear (z); }
static void check (mpfr_prec_t p0, mpfr_prec_t p1) { mpfr_t x, y, z; mpfr_rnd_t rnd; int dif; mpfr_init (x); mpfr_init (y); mpfr_init2 (z, p1 + 10); mpfr_const_log2 (z, MPFR_RNDN); mpfr_clear_cache (__gmpfr_cache_const_log2); for (; p0<=p1; p0++) { mpfr_set_prec (x, p0); mpfr_set_prec (y, p0); { rnd = RND_RAND (); mpfr_const_log2 (x, rnd); mpfr_set (y, z, rnd); if ((dif = mpfr_cmp (x, y)) && mpfr_can_round (z, mpfr_get_prec(z), MPFR_RNDN, rnd, p0)) { printf ("mpfr_const_log2 fails for prec=%u, rnd=%s Diff=%d\n", (unsigned int) p0, mpfr_print_rnd_mode (rnd), dif); printf ("expected "), mpfr_dump (y); printf ("got "), mpfr_dump (x); exit (1); } } } mpfr_clear (x); mpfr_clear (y); mpfr_clear (z); }