summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/check.c2
-rw-r--r--src/div.c2
-rw-r--r--src/div_ui.c4
-rw-r--r--src/frac.c2
-rw-r--r--src/mpfr-gmp.h4
-rw-r--r--src/mpfr-impl.h8
-rw-r--r--src/mpfr-mini-gmp.c2
-rw-r--r--src/mulders.c2
-rw-r--r--src/print_raw.c2
-rw-r--r--src/round_raw_generic.c6
-rw-r--r--src/set_uj.c2
-rw-r--r--src/sub1sp.c13
-rw-r--r--src/vasprintf.c2
13 files changed, 27 insertions, 24 deletions
diff --git a/src/check.c b/src/check.c
index 237029d05..eed6fa4bd 100644
--- a/src/check.c
+++ b/src/check.c
@@ -62,7 +62,7 @@ mpfr_check (mpfr_srcptr x)
if (MPFR_IS_SINGULAR (x))
return MPFR_IS_ZERO(x) || MPFR_IS_NAN(x) || MPFR_IS_INF(x);
/* Check the most significant limb (its MSB must be 1) */
- if ((xm[MPFR_LAST_LIMB(x)] & MPFR_LIMB_HIGHBIT) == 0)
+ if (! MPFR_IS_NORMALIZED (x))
return 0;
/* Check the least significant limb (the trailing bits must be 0) */
rw = prec % GMP_NUMB_BITS;
diff --git a/src/div.c b/src/div.c
index 9cbf8c8c3..dfec7d473 100644
--- a/src/div.c
+++ b/src/div.c
@@ -574,7 +574,7 @@ mpfr_div (mpfr_ptr q, mpfr_srcptr u, mpfr_srcptr v, mpfr_rnd_t rnd_mode)
if (qh)
qh2 = mpn_add_n (sp + qsize, sp + qsize, vp, k);
else
- qh2 = (mp_limb_t) 0;
+ qh2 = MPFR_LIMB_ZERO;
qp[0] ^= sticky3orig; /* restore truncated quotient */
/* compare qh2 + {sp, k + qsize} to {ap, qsize} + low(u) */
diff --git a/src/div_ui.c b/src/div_ui.c
index 92f014587..bed6b6e00 100644
--- a/src/div_ui.c
+++ b/src/div_ui.c
@@ -161,9 +161,9 @@ mpfr_div_ui (mpfr_ptr y, mpfr_srcptr x, unsigned long int u, mpfr_rnd_t rnd_mode
mpn_lshift (yp, tmp + 1, yn, shlz);
yp[0] += tmp[0] >> (GMP_NUMB_BITS - shlz);
- if (w > (MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1)))
+ if (w > MPFR_LIMB_HIGHBIT)
{ middle = 1; }
- else if (w < (MPFR_LIMB_ONE << (GMP_NUMB_BITS - 1)))
+ else if (w < MPFR_LIMB_HIGHBIT)
{ middle = -1; }
else
{ middle = (c != 0); }
diff --git a/src/frac.c b/src/frac.c
index 8d14581d2..0541659a3 100644
--- a/src/frac.c
+++ b/src/frac.c
@@ -110,7 +110,7 @@ mpfr_frac (mpfr_ptr r, mpfr_srcptr u, mpfr_rnd_t rnd_mode)
if (sh == 0)
MPN_COPY_DECR(tp + t0, up, un + 1);
else /* warning: un may be 0 here */
- tp[tn] = k | ((un) ? mpn_lshift (tp + t0, up, un, sh) : (mp_limb_t) 0);
+ tp[tn] = k | ((un) ? mpn_lshift (tp + t0, up, un, sh) : MPFR_LIMB_ZERO);
if (t0 > 0)
MPN_ZERO(tp, t0);
diff --git a/src/mpfr-gmp.h b/src/mpfr-gmp.h
index 90cad1ecf..c0bfd61bc 100644
--- a/src/mpfr-gmp.h
+++ b/src/mpfr-gmp.h
@@ -231,7 +231,7 @@ typedef unsigned int UHWtype;
/* Use (4.0 * ...) instead of (2.0 * ...) to work around buggy compilers
that don't convert ulong->double correctly (eg. SunOS 4 native cc). */
#undef MP_BASE_AS_DOUBLE
-#define MP_BASE_AS_DOUBLE (4.0 * ((mp_limb_t) 1 << (GMP_NUMB_BITS - 2)))
+#define MP_BASE_AS_DOUBLE (4.0 * (MPFR_LIMB_ONE << (GMP_NUMB_BITS - 2)))
/* Structure for conversion between internal binary format and
strings in base 2..36. */
@@ -332,7 +332,7 @@ __MPFR_DECLSPEC void mpfr_tmp_free _MPFR_PROTO ((struct tmp_marker *));
do { \
mp_limb_t dummy MPFR_MAYBE_UNUSED; \
MPFR_ASSERTD ((xl) != 0); \
- udiv_qrnnd (invxl, dummy, ~(xl), ~(mp_limb_t)0, xl); \
+ udiv_qrnnd (invxl, dummy, ~(xl), MPFR_LIMB_MAX, xl); \
} while (0)
#endif
diff --git a/src/mpfr-impl.h b/src/mpfr-impl.h
index 1db245499..f7360e96e 100644
--- a/src/mpfr-impl.h
+++ b/src/mpfr-impl.h
@@ -827,11 +827,13 @@ typedef intmax_t mpfr_eexp_t;
#define MPFR_SET_ZERO(x) (MPFR_EXP(x) = MPFR_EXP_ZERO)
#define MPFR_NOTZERO(x) (MPFR_EXP(x) != MPFR_EXP_ZERO)
+#define MPFR_IS_NORMALIZED(x) \
+ (MPFR_LIMB_MSB (MPFR_MANT(x)[MPFR_LAST_LIMB(x)]) != 0)
+
#define MPFR_IS_FP(x) (!MPFR_IS_NAN(x) && !MPFR_IS_INF(x))
#define MPFR_IS_SINGULAR(x) (MPFR_EXP(x) <= MPFR_EXP_INF)
-#define MPFR_IS_PURE_FP(x) (!MPFR_IS_SINGULAR(x) && \
- (MPFR_ASSERTD ((MPFR_MANT(x)[MPFR_LAST_LIMB(x)] \
- & MPFR_LIMB_HIGHBIT) != 0), 1))
+#define MPFR_IS_PURE_FP(x) \
+ (!MPFR_IS_SINGULAR(x) && (MPFR_ASSERTD (MPFR_IS_NORMALIZED (x)), 1))
#define MPFR_ARE_SINGULAR(x,y) \
(MPFR_UNLIKELY(MPFR_IS_SINGULAR(x)) || MPFR_UNLIKELY(MPFR_IS_SINGULAR(y)))
diff --git a/src/mpfr-mini-gmp.c b/src/mpfr-mini-gmp.c
index 2decdae57..56f31e28e 100644
--- a/src/mpfr-mini-gmp.c
+++ b/src/mpfr-mini-gmp.c
@@ -85,7 +85,7 @@ mpn_scan1 (const mp_limb_t *s, mp_bitcnt_t n)
{
while (1)
{
- if (s[n / GMP_NUMB_BITS] & ((mp_limb_t) 1 << (n % GMP_NUMB_BITS)))
+ if (s[n / GMP_NUMB_BITS] & (MPFR_LIMB_ONE << (n % GMP_NUMB_BITS)))
return n;
n ++;
}
diff --git a/src/mulders.c b/src/mulders.c
index e1038065f..d63ffdb24 100644
--- a/src/mulders.c
+++ b/src/mulders.c
@@ -241,7 +241,7 @@ mpfr_divhigh_n_basecase (mpfr_limb_ptr qp, mpfr_limb_ptr np,
/* warning: we can have np[n-1]=d1 and np[n-2]=d0, but since {np,n} < D,
the largest possible partial quotient is B-1 */
if (MPFR_UNLIKELY(np[n - 1] == d1 && np[n - 2] == d0))
- q2 = ~ (mp_limb_t) 0;
+ q2 = MPFR_LIMB_MAX;
else
udiv_qr_3by2 (q2, q1, q0, np[n - 1], np[n - 2], np[n - 3],
d1, d0, dinv2.inv32);
diff --git a/src/print_raw.c b/src/print_raw.c
index a2f1b2566..58996ca66 100644
--- a/src/print_raw.c
+++ b/src/print_raw.c
@@ -91,7 +91,7 @@ mpfr_print_mant_binary(const char *str, const mp_limb_t *p, mpfr_prec_t r)
{
for(i = GMP_NUMB_BITS-1 ; i >=0 ; i--)
{
- c = (p[n] & (((mp_limb_t)1L)<<i)) ? '1' : '0';
+ c = (p[n] & (MPFR_LIMB_ONE << i)) ? '1' : '0';
putchar(c);
count++;
if (count == r)
diff --git a/src/round_raw_generic.c b/src/round_raw_generic.c
index 36608508b..f22e939b7 100644
--- a/src/round_raw_generic.c
+++ b/src/round_raw_generic.c
@@ -114,8 +114,8 @@ mpfr_round_raw_generic(
}
else
{
- lomask = ~(mp_limb_t) 0;
- himask = ~(mp_limb_t) 0;
+ lomask = MPFR_LIMB_MAX;
+ himask = MPFR_LIMB_MAX;
}
MPFR_ASSERTD(k >= 0);
sb = xp[k] & lomask; /* First non-significant bits */
@@ -239,7 +239,7 @@ mpfr_round_raw_generic(
himask = ~MPFR_LIMB_MASK (GMP_NUMB_BITS - rw);
}
else
- himask = ~(mp_limb_t) 0;
+ himask = MPFR_LIMB_MAX;
MPN_COPY_INCR(yp, xp + xsize - nw, nw);
yp[0] &= himask;
#endif
diff --git a/src/set_uj.c b/src/set_uj.c
index d017d7a04..1f6bca138 100644
--- a/src/set_uj.c
+++ b/src/set_uj.c
@@ -99,7 +99,7 @@ mpfr_set_uj_2exp (mpfr_t x, uintmax_t j, intmax_t e, mpfr_rnd_t rnd)
if (len != 0)
{
if (len == 1)
- yp[0] = (mp_limb_t) 0;
+ yp[0] = MPFR_LIMB_ZERO;
else
MPN_ZERO (yp, len); /* Zero the last limbs */
}
diff --git a/src/sub1sp.c b/src/sub1sp.c
index edc7656d9..272a967da 100644
--- a/src/sub1sp.c
+++ b/src/sub1sp.c
@@ -142,7 +142,7 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
mp_limb_t limb;
int inexact;
mp_limb_t bcp,bcp1; /* Cp and C'p+1 */
- mp_limb_t bbcp = (mp_limb_t) -1, bbcp1 = (mp_limb_t) -1; /* Cp+1 and C'p+2,
+ mp_limb_t bbcp = MPFR_LIMB_MAX, bbcp1 = MPFR_LIMB_MAX; /* Cp+1 and C'p+2,
gcc claims that they might be used uninitialized. We fill them with invalid
values, which should produce a failure if so. See README.dev file. */
@@ -658,8 +658,8 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
/* Final exponent -1 since we have shifted the mantissa */
bx--;
/* Update bcp and bcp1 */
- MPFR_ASSERTD(bbcp != (mp_limb_t) -1);
- MPFR_ASSERTD(bbcp1 != (mp_limb_t) -1);
+ MPFR_ASSERTD(bbcp != MPFR_LIMB_MAX);
+ MPFR_ASSERTD(bbcp1 != MPFR_LIMB_MAX);
bcp = bbcp;
bcp1 = bbcp1;
/* We don't have anymore a valid Cp+1!
@@ -706,7 +706,7 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
DEBUG( printf("(SubOneUlp)Cp=%d, Cp+1=%d C'p+1=%d\n", bcp!=0,bbcp!=0,bcp1!=0));
/* Compute the last bit (Since we have shifted the mantissa)
we need one more bit!*/
- MPFR_ASSERTD(bbcp != (mp_limb_t) -1);
+ MPFR_ASSERTD(bbcp != MPFR_LIMB_MAX);
if ( (rnd_mode == MPFR_RNDZ && bcp==0)
|| (rnd_mode==MPFR_RNDN && bbcp==0)
|| (bcp && bcp1==0) ) /*Exact result*/
@@ -756,8 +756,9 @@ mpfr_sub1sp (mpfr_ptr a, mpfr_srcptr b, mpfr_srcptr c, mpfr_rnd_t rnd_mode)
bbcp=0;
DEBUG( printf("(Truncate) Cp=%d, Cp+1=%d C'p+1=%d C'p+2=%d\n", \
bcp!=0, bbcp!=0, bcp1!=0, bbcp1!=0) );
- MPFR_ASSERTD(bbcp != (mp_limb_t) -1);
- MPFR_ASSERTD((rnd_mode != MPFR_RNDN) || (bcp != 0) || (bbcp == 0) || (bbcp1 != (mp_limb_t) -1));
+ MPFR_ASSERTD(bbcp != MPFR_LIMB_MAX);
+ MPFR_ASSERTD(rnd_mode != MPFR_RNDN || bcp != 0 ||
+ bbcp == 0 || bbcp1 != MPFR_LIMB_MAX);
if (((rnd_mode != MPFR_RNDZ) && bcp)
||
((rnd_mode == MPFR_RNDN) && (bcp == 0) && (bbcp) && (bbcp1)))
diff --git a/src/vasprintf.c b/src/vasprintf.c
index 6336d02b6..74c88d97b 100644
--- a/src/vasprintf.c
+++ b/src/vasprintf.c
@@ -1942,7 +1942,7 @@ mpfr_vasprintf (char **ptr, const char *fmt, va_list ap)
while (--n != 0)
{
q++;
- *q = (mp_limb_t) 0;
+ *q = MPFR_LIMB_ZERO;
}
}
break;