diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2014-02-17 13:28:38 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2014-02-17 13:28:38 +0000 |
commit | 942d64b07703a2277c375f7e0d26337bb550921b (patch) | |
tree | 1c48ec6e27d41dd94a5d8196d2aeaeb15e0c767f /src/bernoulli.c | |
parent | 552151e31daabc55264e0b29c9294f5773dab4d6 (diff) | |
download | mpfr-942d64b07703a2277c375f7e0d26337bb550921b.tar.gz |
[src/bernoulli.c] Minor bug fixed and other improvements.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@8986 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/bernoulli.c')
-rw-r--r-- | src/bernoulli.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/bernoulli.c b/src/bernoulli.c index 931dc3688..9386479be 100644 --- a/src/bernoulli.c +++ b/src/bernoulli.c @@ -80,11 +80,11 @@ mpfr_bernoulli_internal (mpz_t *b, unsigned long n) prec = __gmpfr_ceil_log2 (7.0 * (double) n); /* bound 2*pi by 7 */ prec = (prec + 1) >> 1; /* sqrt(2*pi*n) <= 2^prec */ mpfr_init2 (z, 53); - mpfr_set_d (z, 0.0586, MPFR_RNDU); /* 1/e/2/pi <= 0.0586 */ + mpfr_set_ui_2exp (z, 251469612, -32, MPFR_RNDU); /* 1/e/2/pi <= z */ mpfr_mul_ui (z, z, n, MPFR_RNDU); mpfr_log2 (z, z, MPFR_RNDU); mpfr_mul_ui (z, z, n, MPFR_RNDU); - p = mpfr_get_d (z, MPFR_RNDU); /* (n/e/2/pi)^n <= 2^p */ + p = mpfr_get_ui (z, MPFR_RNDU); /* (n/e/2/pi)^n <= 2^p */ mpfr_clear (z); /* the +14 term ensures no rounding failure up to n=10000 */ prec += p + mpz_sizeinbase (den, 2) + 14; @@ -192,7 +192,7 @@ mpfr_bernoulli_internal (mpz_t *b, unsigned long n) mpz_clear (t); mpz_clear (u); - if (ok == 0) + if (!ok) { prec += prec / 10; goto try_again; @@ -228,7 +228,7 @@ mpfr_bernoulli_cache (unsigned long n) } MPFR_ASSERTD (bernoulli_alloc > n); MPFR_ASSERTD (bernoulli_size >= 0); - for(i = bernoulli_size; i <= n; i++) + for (i = bernoulli_size; i <= n; i++) mpfr_bernoulli_internal (bernoulli_table, i); bernoulli_size = n+1; } |