summaryrefslogtreecommitdiff
path: root/src/bernoulli.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-02-17 13:28:38 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2014-02-17 13:28:38 +0000
commit942d64b07703a2277c375f7e0d26337bb550921b (patch)
tree1c48ec6e27d41dd94a5d8196d2aeaeb15e0c767f /src/bernoulli.c
parent552151e31daabc55264e0b29c9294f5773dab4d6 (diff)
downloadmpfr-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.c8
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;
}