version 1.1.1.2, 2000/09/09 14:13:12 |
version 1.1.1.3, 2003/08/25 16:06:35 |
|
|
/* mpf_ui_sub -- Subtract a float from an unsigned long int. |
/* mpf_ui_sub -- Subtract a float from an unsigned long int. |
|
|
Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc. |
Copyright 1993, 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc. |
|
|
This file is part of the GNU MP Library. |
This file is part of the GNU MP Library. |
|
|
Line 23 MA 02111-1307, USA. */ |
|
Line 23 MA 02111-1307, USA. */ |
|
#include "gmp-impl.h" |
#include "gmp-impl.h" |
|
|
void |
void |
#if __STDC__ |
|
mpf_ui_sub (mpf_ptr r, unsigned long int u, mpf_srcptr v) |
mpf_ui_sub (mpf_ptr r, unsigned long int u, mpf_srcptr v) |
#else |
|
mpf_ui_sub (r, u, v) |
|
mpf_ptr r; |
|
unsigned long int u; |
|
mpf_srcptr v; |
|
#endif |
|
{ |
{ |
mp_srcptr up, vp; |
mp_srcptr up, vp; |
mp_ptr rp, tp; |
mp_ptr rp, tp; |
Line 217 mpf_ui_sub (r, u, v) |
|
Line 210 mpf_ui_sub (r, u, v) |
|
/* uuuu */ |
/* uuuu */ |
mp_size_t size, i; |
mp_size_t size, i; |
size = usize - vsize; |
size = usize - vsize; |
tp[0] = -up[0]; |
tp[0] = -up[0] & GMP_NUMB_MASK; |
for (i = 1; i < size; i++) |
for (i = 1; i < size; i++) |
tp[i] = ~up[i]; |
tp[i] = ~up[i] & GMP_NUMB_MASK; |
mpn_sub_n (tp + size, vp, up + size, vsize); |
mpn_sub_n (tp + size, vp, up + size, vsize); |
mpn_sub_1 (tp + size, tp + size, vsize, (mp_limb_t) 1); |
mpn_sub_1 (tp + size, tp + size, vsize, (mp_limb_t) 1); |
negate ^= 1; |
negate ^= 1; |
Line 236 mpf_ui_sub (r, u, v) |
|
Line 229 mpf_ui_sub (r, u, v) |
|
{ |
{ |
mp_size_t size, i; |
mp_size_t size, i; |
size = vsize - usize; |
size = vsize - usize; |
tp[0] = -vp[0]; |
tp[0] = -vp[0] & GMP_NUMB_MASK; |
for (i = 1; i < size; i++) |
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_n (tp + size, up, vp + size, usize); |
mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); |
mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); |
rsize = vsize; |
rsize = vsize; |
Line 294 mpf_ui_sub (r, u, v) |
|
Line 287 mpf_ui_sub (r, u, v) |
|
/* vvvvv */ |
/* vvvvv */ |
mp_size_t size, i; |
mp_size_t size, i; |
size = vsize + ediff - usize; |
size = vsize + ediff - usize; |
tp[0] = -vp[0]; |
tp[0] = -vp[0] & GMP_NUMB_MASK; |
for (i = 1; i < size; i++) |
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 (tp + size, up, usize, vp + size, usize - ediff); |
mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); |
mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1); |
rsize = vsize + ediff; |
rsize = vsize + ediff; |
Line 309 mpf_ui_sub (r, u, v) |
|
Line 302 mpf_ui_sub (r, u, v) |
|
/* vv */ |
/* vv */ |
mp_size_t size, i; |
mp_size_t size, i; |
size = vsize + ediff - usize; |
size = vsize + ediff - usize; |
tp[0] = -vp[0]; |
tp[0] = -vp[0] & GMP_NUMB_MASK; |
for (i = 1; i < vsize; i++) |
for (i = 1; i < vsize; i++) |
tp[i] = ~vp[i]; |
tp[i] = ~vp[i] & GMP_NUMB_MASK; |
for (i = vsize; i < size; i++) |
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); |
mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1); |
rsize = size + usize; |
rsize = size + usize; |
} |
} |