diff options
author | pelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4> | 2005-06-14 11:17:55 +0000 |
---|---|---|
committer | pelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4> | 2005-06-14 11:17:55 +0000 |
commit | d7df4e4bce8cb0c3aead2a7fc635007629decfb0 (patch) | |
tree | 1159ad67c88cce0539ee6beffea9d39f77015f81 /mul_ui.c | |
parent | f1ecad2c711eaac9634190e83c314fe62f6324ea (diff) | |
download | mpfr-d7df4e4bce8cb0c3aead2a7fc635007629decfb0.tar.gz |
Add Fast case for u==1
Add Fast case for u a power of 2 (Call mul/div_2si).
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@3650 280ebfd0-de03-0410-8827-d642c229c3f4
Diffstat (limited to 'mul_ui.c')
-rw-r--r-- | mul_ui.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -63,7 +63,7 @@ mpfr_mul_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mp_rnd_t rnd_mode) } else if (MPFR_UNLIKELY (u <= 1)) { - if (u == 0) + if (u < 1) { MPFR_SET_ZERO (y); MPFR_SET_SAME_SIGN (y, x); @@ -72,6 +72,8 @@ mpfr_mul_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mp_rnd_t rnd_mode) else return mpfr_set (y, x, rnd_mode); } + else if (MPFR_UNLIKELY (IS_POW2 (u))) + return mpfr_mul_2si (y, x, MPFR_INT_CEIL_LOG2 (u)-1, rnd_mode); yp = MPFR_MANT (y); yn = MPFR_LIMB_SIZE (y); |