summaryrefslogtreecommitdiff
path: root/mul_ui.c
diff options
context:
space:
mode:
authorpelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4>2005-06-14 11:17:55 +0000
committerpelissip <pelissip@280ebfd0-de03-0410-8827-d642c229c3f4>2005-06-14 11:17:55 +0000
commitd7df4e4bce8cb0c3aead2a7fc635007629decfb0 (patch)
tree1159ad67c88cce0539ee6beffea9d39f77015f81 /mul_ui.c
parentf1ecad2c711eaac9634190e83c314fe62f6324ea (diff)
downloadmpfr-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.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/mul_ui.c b/mul_ui.c
index e9b595d49..ff5b7f797 100644
--- a/mul_ui.c
+++ b/mul_ui.c
@@ -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);