summaryrefslogtreecommitdiff
path: root/mpf
diff options
context:
space:
mode:
authorTorbjorn Granlund <tg@gmplib.org>2017-03-07 16:55:42 +0100
committerTorbjorn Granlund <tg@gmplib.org>2017-03-07 16:55:42 +0100
commit2aa15ac8838719d02b97fcd4b8a9f8e58b599927 (patch)
tree3603c983323fbd3191a6cd6560202ff188135170 /mpf
parent3b3520034db89bb90a8f6248f0989e57b909b060 (diff)
downloadgmp-2aa15ac8838719d02b97fcd4b8a9f8e58b599927.tar.gz
Return negative value for negative input.
Diffstat (limited to 'mpf')
-rw-r--r--mpf/get_d_2exp.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/mpf/get_d_2exp.c b/mpf/get_d_2exp.c
index 2bc2248ce..61a069e60 100644
--- a/mpf/get_d_2exp.c
+++ b/mpf/get_d_2exp.c
@@ -1,6 +1,6 @@
/* double mpf_get_d_2exp (signed long int *exp, mpf_t src).
-Copyright 2001-2004 Free Software Foundation, Inc.
+Copyright 2001-2004, 2017 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@@ -33,17 +33,17 @@ see https://www.gnu.org/licenses/. */
double
-mpf_get_d_2exp (signed long int *exp2, mpf_srcptr src)
+mpf_get_d_2exp (signed long int *expptr, mpf_srcptr src)
{
mp_size_t size, abs_size;
mp_srcptr ptr;
int cnt;
- long exp;
+ double d;
size = SIZ(src);
if (UNLIKELY (size == 0))
{
- *exp2 = 0;
+ *expptr = 0;
return 0.0;
}
@@ -52,9 +52,8 @@ mpf_get_d_2exp (signed long int *exp2, mpf_srcptr src)
count_leading_zeros (cnt, ptr[abs_size - 1]);
cnt -= GMP_NAIL_BITS;
- exp = EXP(src) * GMP_NUMB_BITS - cnt;
- *exp2 = exp;
+ *expptr = EXP(src) * GMP_NUMB_BITS - cnt;
- return mpn_get_d (ptr, abs_size, (mp_size_t) 0,
- (long) - (abs_size * GMP_NUMB_BITS - cnt));
+ d = mpn_get_d (ptr, abs_size, 0, -(abs_size * GMP_NUMB_BITS - cnt));
+ return size >= 0 ? d : -d;
}