summaryrefslogtreecommitdiff
path: root/log_base_2.c
diff options
context:
space:
mode:
authordaney <daney@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 15:02:45 +0000
committerdaney <daney@280ebfd0-de03-0410-8827-d642c229c3f4>2001-10-25 15:02:45 +0000
commitc481bdd7b842503bf646dfb547779871363f20d1 (patch)
tree71da8ee378c423545473eb1a60c58f6690166506 /log_base_2.c
parent152bd1b6127306173955102e6a08d15606215752 (diff)
downloadmpfr-c481bdd7b842503bf646dfb547779871363f20d1.tar.gz
coorection for reuse
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1368 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'log_base_2.c')
-rw-r--r--log_base_2.c39
1 files changed, 25 insertions, 14 deletions
diff --git a/log_base_2.c b/log_base_2.c
index 06c9fb2c5..f64b597b6 100644
--- a/log_base_2.c
+++ b/log_base_2.c
@@ -49,36 +49,47 @@ mpfr_log2 (r, a, rnd_mode)
MPFR_SET_NAN(r);
return 1;
}
-
- if (MPFR_IS_ZERO(a))
- {
- MPFR_SET_INF(r);
- if (MPFR_SIGN(r) > 0)
- MPFR_CHANGE_SIGN(r);
- DIVIDE_BY_ZERO; /* Execption GMP*/
- return 0;
- }
-
/* If a is negative, the result is NaN */
if (MPFR_SIGN(a) < 0)
{
- MPFR_SET_NAN(r);
- return 1;
+ if (MPFR_IS_ZERO(a))
+ {
+ MPFR_SET_INF(r);
+ if (MPFR_SIGN(r) > 0)
+ MPFR_CHANGE_SIGN(r);
+ /* Execption GMP*/
+ return 0;
+ }
+ else
+ {
+ MPFR_SET_NAN(r);
+ return 1;
+ }
}
MPFR_CLEAR_NAN(r);
/* check for infinity before zero */
if (MPFR_IS_INF(a))
- {
+ {
MPFR_SET_INF(r);
- MPFR_SET_SAME_SIGN(r,a);
+ if(MPFR_SIGN(r) < 0)
+ MPFR_CHANGE_SIGN(r);
return 0;
}
/* Now we can clear the flags without damage even if r == a */
+
MPFR_CLEAR_INF(r);
+ if (MPFR_IS_ZERO(a))
+ {
+ MPFR_SET_INF(r);
+ if (MPFR_SIGN(r) > 0)
+ MPFR_CHANGE_SIGN(r);
+ /* Execption GMP*/
+ return 0;
+ }
/* If a is 1, the result is 0 */
if (mpfr_cmp_ui(a,1) == 0)