diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-04 15:14:31 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2020-03-04 15:14:31 +0000 |
commit | 8907927ab213e3e5134de3bbdd6614466adfd428 (patch) | |
tree | db6a6b6e94dda1704e6bb22d600f5de199efc0e2 /src/sub1.c | |
parent | fae6180ab94906794d1cab8246b69ee8a7e5eb4c (diff) | |
download | mpfr-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.c | 7 |
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. |