summaryrefslogtreecommitdiff
path: root/src/sub1sp.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2016-07-01 00:51:59 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2016-07-01 00:51:59 +0000
commit58164a08d9ed7357c9388e40235b6b11a8fbdae3 (patch)
tree2f3877c9ba43488bc1480c149372c7b1ab371c42 /src/sub1sp.c
parent8cd8d69e3e2a998de51e4580feb555f6b679a21f (diff)
downloadmpfr-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.c7
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);