diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-30 08:09:21 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-30 08:09:21 +0000 |
commit | 81cc6ae854ad735088be6ed73889ae68bb1b593e (patch) | |
tree | f66eed6d157c56744bcb00562dceacfe3c3f743f | |
parent | 95b1222d762bd3c20ab2d636b77eb5cf9de88cee (diff) | |
download | mpfr-81cc6ae854ad735088be6ed73889ae68bb1b593e.tar.gz |
[src/set_ui_2exp.c] fix for 16-bit limb
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13078 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | src/set_ui_2exp.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/set_ui_2exp.c b/src/set_ui_2exp.c index 3a3742345..92f5f9557 100644 --- a/src/set_ui_2exp.c +++ b/src/set_ui_2exp.c @@ -34,6 +34,7 @@ mpfr_set_ui_2exp (mpfr_ptr x, unsigned long i, mpfr_exp_t e, mpfr_rnd_t rnd_mode MPFR_SET_ZERO (x); MPFR_RET (0); } +#ifdef MPFR_LONG_WITHIN_LIMB else { mp_size_t xn; @@ -69,4 +70,15 @@ mpfr_set_ui_2exp (mpfr_ptr x, unsigned long i, mpfr_exp_t e, mpfr_rnd_t rnd_mode MPFR_EXP (x) = e; return mpfr_check_range (x, inex, rnd_mode); } +#else + /* if a long does not fit into a limb, we use mpfr_set_z_2exp */ + { + mpz_t z; + int inex; + mpz_init_set_ui (z, i); + inex = mpfr_set_z_2exp (x, z, e, rnd_mode); + mpz_clear (z); + return inex; + } +#endif } |