diff options
author | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-31 19:22:05 +0000 |
---|---|---|
committer | zimmerma <zimmerma@280ebfd0-de03-0410-8827-d642c229c3f4> | 2018-08-31 19:22:05 +0000 |
commit | 6becbebf19ca4d5e5f92bcba79baedace905b976 (patch) | |
tree | 6a7f42106d1cd1315125f0811f794a8b3c1e2518 /src/mul_ui.c | |
parent | ebd52382c6dcfcbe17a13cb5c3c26199d2f8613c (diff) | |
download | mpfr-6becbebf19ca4d5e5f92bcba79baedace905b976.tar.gz |
[src/mul_ui.c] adapt for 16-bit limb
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@13103 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'src/mul_ui.c')
-rw-r--r-- | src/mul_ui.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mul_ui.c b/src/mul_ui.c index 55bf1af8e..00f7b9f85 100644 --- a/src/mul_ui.c +++ b/src/mul_ui.c @@ -75,6 +75,7 @@ mpfr_mul_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode else if (MPFR_UNLIKELY (IS_POW2 (u))) return mpfr_mul_2si (y, x, MPFR_INT_CEIL_LOG2 (u), rnd_mode); +#ifdef MPFR_LONG_WITHIN_LIMB yp = MPFR_MANT (y); xn = MPFR_LIMB_SIZE (x); @@ -114,6 +115,16 @@ mpfr_mul_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode MPFR_SET_EXP (y, MPFR_GET_EXP (x) + cnt); MPFR_SET_SAME_SIGN (y, x); +#else + { + mpfr_t uu; + + mpfr_init2 (uu, sizeof (unsigned long) * CHAR_BIT); + mpfr_set_ui (uu, u, MPFR_RNDZ); + inexact = mpfr_mul (y, x, uu, rnd_mode); + mpfr_clear (uu); + } +#endif /* MPFR_LONG_WITHIN_LIMB */ MPFR_RET (inexact); } |