summaryrefslogtreecommitdiff
path: root/mpf
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-06-10 00:36:27 +0200
committerKevin Ryde <user42@zip.com.au>2001-06-10 00:36:27 +0200
commitadbd8d54a5670b43828ec5046a5770c0fc0b156e (patch)
treec651ea670d0725fe8201fe32ffc0af7584091574 /mpf
parent90f9273d09f62e48c7a3f817d74248cd31274197 (diff)
downloadgmp-adbd8d54a5670b43828ec5046a5770c0fc0b156e.tar.gz
* mpf/mul_ui.c: Do size==0 test earlier.
Diffstat (limited to 'mpf')
-rw-r--r--mpf/mul_ui.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/mpf/mul_ui.c b/mpf/mul_ui.c
index 52f1f3cf7..89df878f3 100644
--- a/mpf/mul_ui.c
+++ b/mpf/mul_ui.c
@@ -28,14 +28,20 @@ mpf_mul_ui (mpf_ptr r, mpf_srcptr u, unsigned long int v)
mp_srcptr up;
mp_size_t usize;
mp_size_t size;
- mp_size_t prec = r->_mp_prec;
+ mp_size_t prec;
mp_limb_t cy_limb;
mp_ptr rp;
usize = u->_mp_size;
- size = ABS (usize);
+ if (usize == 0 || v == 0)
+ {
+ r->_mp_size = 0;
+ r->_mp_exp = 0;
+ return;
+ }
- rp = r->_mp_d;
+ size = ABS (usize);
+ prec = r->_mp_prec;
up = u->_mp_d;
if (size > prec)
{
@@ -50,18 +56,11 @@ mpf_mul_ui (mpf_ptr r, mpf_srcptr u, unsigned long int v)
up++, size--;
#endif
- if (size == 0 || v == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0; /* ??? */
- }
- else
- {
- cy_limb = mpn_mul_1 (rp, up, size, (mp_limb_t) v);
- rp[size] = cy_limb;
- cy_limb = cy_limb != 0;
- r->_mp_exp = u->_mp_exp + cy_limb;
- size += cy_limb;
- r->_mp_size = usize >= 0 ? size : -size;
- }
+ rp = r->_mp_d;
+ cy_limb = mpn_mul_1 (rp, up, size, (mp_limb_t) v);
+ rp[size] = cy_limb;
+ cy_limb = cy_limb != 0;
+ r->_mp_exp = u->_mp_exp + cy_limb;
+ size += cy_limb;
+ r->_mp_size = usize >= 0 ? size : -size;
}