summaryrefslogtreecommitdiff
path: root/src/sub1.c
diff options
context:
space:
mode:
authorvlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2020-03-04 15:14:31 +0000
committervlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4>2020-03-04 15:14:31 +0000
commit8907927ab213e3e5134de3bbdd6614466adfd428 (patch)
treedb6a6b6e94dda1704e6bb22d600f5de199efc0e2 /src/sub1.c
parentfae6180ab94906794d1cab8246b69ee8a7e5eb4c (diff)
downloadmpfr-8907927ab213e3e5134de3bbdd6614466adfd428.tar.gz
[src/sub1.c] cancel: also log its value; range checking/tracking.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13753 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/sub1.c')
-rw-r--r--src/sub1.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/sub1.c b/src/sub1.c
index 7bb054871..272709acc 100644
--- a/src/sub1.c
+++ b/src/sub1.c
@@ -53,9 +53,10 @@ mpfr_sub1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
(void) MPFR_GET_PREC (c);
sign = mpfr_cmp2 (b, c, &cancel);
- MPFR_LOG_MSG (("sign=%d\n", sign));
+
if (MPFR_UNLIKELY(sign == 0))
{
+ MPFR_LOG_MSG (("sign=0\n", 0));
if (rnd_mode == MPFR_RNDD)
MPFR_SET_NEG (a);
else
@@ -64,6 +65,10 @@ mpfr_sub1 (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
MPFR_RET (0);
}
+ /* sign != 0, so that cancel has a valid value. */
+ MPFR_LOG_MSG (("sign=%d cancel=%Pd\n", sign, cancel));
+ MPFR_ASSERTD (cancel >= 0 && cancel <= MPFR_PREC_MAX);
+
/*
* If subtraction: sign(a) = sign * sign(b)
* If addition: sign(a) = sign of the larger argument in absolute value.