diff options
author | daney <daney@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-06-14 15:55:36 +0000 |
---|---|---|
committer | daney <daney@280ebfd0-de03-0410-8827-d642c229c3f4> | 2001-06-14 15:55:36 +0000 |
commit | a22d401bc7b4f9fb4c1025a91e67e9318a40b7e9 (patch) | |
tree | b8a6606290bbcf96d57362627dc25c3217f6c333 /ui_sub.c | |
parent | 0c5d5d07b72d32a376331aee381619d2a5e96980 (diff) | |
download | mpfr-a22d401bc7b4f9fb4c1025a91e67e9318a40b7e9.tar.gz |
A few patches.
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1091 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'ui_sub.c')
-rw-r--r-- | ui_sub.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -41,6 +41,8 @@ mpfr_ui_sub (y, u, x, rnd_mode) mp_limb_t up[1]; unsigned long cnt; + + if (MPFR_IS_NAN(x)) { MPFR_SET_NAN(y); @@ -57,12 +59,15 @@ mpfr_ui_sub (y, u, x, rnd_mode) } if (u) { + + MPFR_INIT1(up, uu, BITS_PER_MP_LIMB, 1); count_leading_zeros(cnt, (mp_limb_t) u); *up = (mp_limb_t) u << cnt; MPFR_EXP(uu) = BITS_PER_MP_LIMB-cnt; mpfr_sub (y, uu, x, rnd_mode); + } else mpfr_neg (y, x, rnd_mode); /* if u=0, then set y to -x */ } |