diff options
author | daney <daney@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-25 15:02:59 +0000 |
---|---|---|
committer | daney <daney@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-10-25 15:02:59 +0000 |
commit | 1dfd99f01be78d9b4b09f795b69e41c95ffb13ec (patch) | |
tree | bcbe984cded05daae046dc46a03baed92a23a0bc | |
parent | c481bdd7b842503bf646dfb547779871363f20d1 (diff) | |
download | mpfr-1dfd99f01be78d9b4b09f795b69e41c95ffb13ec.tar.gz |
correction for reuse
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1369 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | log_base_10.c | 40 |
1 files changed, 26 insertions, 14 deletions
diff --git a/log_base_10.c b/log_base_10.c index fb50332be..b263c8bc2 100644 --- a/log_base_10.c +++ b/log_base_10.c @@ -49,36 +49,47 @@ mpfr_log10 (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) @@ -88,6 +99,7 @@ mpfr_log10 (r, a, rnd_mode) return 0; } + /* General case */ { /* Declaration of the intermediary variable */ |