diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-07-01 00:51:59 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2016-07-01 00:51:59 +0000 |
commit | 58164a08d9ed7357c9388e40235b6b11a8fbdae3 (patch) | |
tree | 2f3877c9ba43488bc1480c149372c7b1ab371c42 /src/sub1sp.c | |
parent | 8cd8d69e3e2a998de51e4580feb555f6b679a21f (diff) | |
download | mpfr-58164a08d9ed7357c9388e40235b6b11a8fbdae3.tar.gz |
[src/sub1sp.c] Added comments.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@10537 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/sub1sp.c')
-rw-r--r-- | src/sub1sp.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/sub1sp.c b/src/sub1sp.c index 61400ab6b..3a83feca3 100644 --- a/src/sub1sp.c +++ b/src/sub1sp.c @@ -227,6 +227,9 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode) /* <-- b --> <-- c --> : exact sub */ ap = MPFR_MANT(a); + /* FIXME: There's no reason to have a particular case for + sub1sp.c; it would be better to introduce a wrapper macro + to mpn_sub_n. */ if (n == 1) ap[0] = MPFR_MANT(b)[0] - MPFR_MANT(c)[0]; else @@ -234,6 +237,8 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode) /* Normalize */ ExactNormalize: limb = ap[n-1]; + /* The case n == 1 is just a faster version of the "else" case + with limb <> 0. */ if (n == 1) { /* limb <> 0 since b > c */ @@ -241,7 +246,7 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode) ap[0] <<= cnt; bx -= cnt; } - else if (MPFR_LIKELY(limb)) + else if (MPFR_LIKELY (limb != 0)) { /* First limb is not zero. */ count_leading_zeros(cnt, limb); |