diff options
Diffstat (limited to 'mpf/sub.c')
-rw-r--r-- | mpf/sub.c | 24 |
1 files changed, 12 insertions, 12 deletions
@@ -156,7 +156,7 @@ mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v) 1 00000000 ... 0 ffffffff ... */ - if (up[usize - 1] != 1 || vp[vsize - 1] != ~(mp_limb_t) 0 + if (up[usize - 1] != 1 || vp[vsize - 1] != GMP_NUMB_MAX || (usize >= 2 && up[usize - 2] != 0)) goto general_case; @@ -166,7 +166,7 @@ mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v) /* Skip sequences of 00000000/ffffffff */ while (vsize != 0 && usize != 0 && up[usize - 1] == 0 - && vp[vsize - 1] == ~(mp_limb_t) 0) + && vp[vsize - 1] == GMP_NUMB_MAX) { usize--; vsize--; @@ -175,7 +175,7 @@ mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v) if (usize == 0) { - while (vsize != 0 && vp[vsize - 1] == ~(mp_limb_t) 0) + while (vsize != 0 && vp[vsize - 1] == GMP_NUMB_MAX) { vsize--; exp--; @@ -212,7 +212,7 @@ mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v) mp_size_t size, i; size = vsize; for (i = 0; i < size; i++) - tp[i] = ~vp[i]; + tp[i] = ~vp[i] & GMP_NUMB_MASK; cy_limb = 1 - mpn_add_1 (tp, tp, vsize, (mp_limb_t) 1); rsize = vsize; if (cy_limb == 0) @@ -240,7 +240,7 @@ mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v) mp_size_t size, i; size = vsize - usize; for (i = 0; i < size; i++) - tp[i] = ~vp[i]; + tp[i] = ~vp[i] & GMP_NUMB_MASK; cy_limb = mpn_sub_n (tp + size, up, vp + size, usize); cy_limb+= mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); cy_limb-= mpn_add_1 (tp, tp, vsize, (mp_limb_t) 1); @@ -339,9 +339,9 @@ general_case: /* vvvvvvv */ mp_size_t size, i; size = vsize - usize; - tp[0] = -vp[0]; + tp[0] = -vp[0] & GMP_NUMB_MASK; for (i = 1; i < size; i++) - tp[i] = ~vp[i]; + tp[i] = ~vp[i] & GMP_NUMB_MASK; mpn_sub_n (tp + size, up, vp + size, usize); mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); rsize = vsize; @@ -365,9 +365,9 @@ general_case: /* vvvvv */ mp_size_t size, i; size = vsize + ediff - usize; - tp[0] = -vp[0]; + tp[0] = -vp[0] & GMP_NUMB_MASK; for (i = 1; i < size; i++) - tp[i] = ~vp[i]; + tp[i] = ~vp[i] & GMP_NUMB_MASK; mpn_sub (tp + size, up, usize, vp + size, usize - ediff); mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); rsize = vsize + ediff; @@ -380,11 +380,11 @@ general_case: /* vv */ mp_size_t size, i; size = vsize + ediff - usize; - tp[0] = -vp[0]; + tp[0] = -vp[0] & GMP_NUMB_MASK; for (i = 1; i < vsize; i++) - tp[i] = ~vp[i]; + tp[i] = ~vp[i] & GMP_NUMB_MASK; for (i = vsize; i < size; i++) - tp[i] = ~(mp_limb_t) 0; + tp[i] = GMP_NUMB_MAX; mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1); rsize = size + usize; } |