summaryrefslogtreecommitdiff
path: root/src/jn.c
diff options
context:
space:
mode:
authorzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2011-01-24 16:14:18 +0000
committerzimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4>2011-01-24 16:14:18 +0000
commit2e791645a7d4f63f5fe975aa9ee4a80baab04a4d (patch)
treed710dff8bf4fd657917c2234e1357a4e2b2a54f9 /src/jn.c
parent5f43877a43419fe7f56a7b61f5722e08f6b477d8 (diff)
downloadmpfr-2e791645a7d4f63f5fe975aa9ee4a80baab04a4d.tar.gz
[src/jn.c] added notes for correctness of the algorithm used
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@7420 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/jn.c')
-rw-r--r--src/jn.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/jn.c b/src/jn.c
index 8e9201812..af51cf2b8 100644
--- a/src/jn.c
+++ b/src/jn.c
@@ -195,6 +195,8 @@ mpfr_jn (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
if (absn > 0)
mpfr_div_2ui (t, t, absn, MPFR_RNDN);
mpfr_set (s, t, MPFR_RNDN);
+ /* note: we assume here that the maximal error is proportional to
+ 2^exps, which is true also in the case where s=0 */
exps = MPFR_IS_ZERO (s) ? MPFR_EMIN_MIN : MPFR_GET_EXP (s);
expT = exps;
for (k = 1; ; k++)
@@ -209,6 +211,7 @@ mpfr_jn (mpfr_ptr res, long n, mpfr_srcptr z, mpfr_rnd_t r)
mpfr_div_ui (t, t, k, MPFR_RNDN);
mpfr_div_ui (t, t, k + absn, MPFR_RNDN);
}
+ /* see above note */
exps = MPFR_IS_ZERO (s) ? MPFR_EMIN_MIN : MPFR_GET_EXP (t);
if (exps > expT)
expT = exps;