summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-01-22 19:05:42 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-01-22 19:05:42 -0800
commitceac286861928128d066b31c43e32a6034df0afb (patch)
tree9dbbc6c4ede2ba39f0d636f4f3a1c67a20f9aec6
parent812e34fccb1fe84d9127e2b294e6490e0bde4b00 (diff)
downloadtxr-ceac286861928128d066b31c43e32a6034df0afb.tar.gz
txr-ceac286861928128d066b31c43e32a6034df0afb.tar.bz2
txr-ceac286861928128d066b31c43e32a6034df0afb.zip
mpi: put access macros into mp_ namespace
* mpi/mpi.h (mp_sign, mp_isneg, mp_used, mp_alloc, mp_digits, mp_digit): New macros, based on renaming SIGN, ISNEG, USED, ALLOC, DIGITS and DIGIT. (mp_set_prec): Use mp_digits instead of DIGITS. * mpi/mpi.c (SIGN, ISNEG, USED, ALLOC, DIGITS, DIGIT): Macros defined here now, as local aliases for their namespaced counterparts. * arith.c (signum, floordiv): Replace ISNEG with mp_isneg. * rand.c (random): Replace ISNEG with mp_isneg. * sysif.c (off_t_num): Replace USED, DIGITS and ISNEG with mp_used, mp_digits and mp_isneg.
-rw-r--r--arith.c18
-rw-r--r--mpi/mpi.c8
-rw-r--r--mpi/mpi.h14
-rw-r--r--rand.c2
-rw-r--r--sysif.c18
5 files changed, 34 insertions, 26 deletions
diff --git a/arith.c b/arith.c
index 8ba7fd21..62b53618 100644
--- a/arith.c
+++ b/arith.c
@@ -779,7 +779,7 @@ static val signum(val anum)
{
switch (type(anum)) {
case BGNUM:
- return if3(ISNEG(mp(anum)), negone, one);
+ return if3(mp_isneg(mp(anum)), negone, one);
case FLNUM:
{
double a = anum->fl.n;
@@ -1266,9 +1266,9 @@ tail:
cnum a = c_n(anum);
if (a == 0)
return zero;
- if (a < 0 && !ISNEG(mp(bnum)))
+ if (a < 0 && !mp_isneg(mp(bnum)))
return negone;
- if (a > 0 && ISNEG(mp(bnum)))
+ if (a > 0 && mp_isneg(mp(bnum)))
return negone;
return zero;
}
@@ -1301,8 +1301,8 @@ tail:
goto divzero;
if (b < 0)
mp_neg(mp(n), mp(n));
- if (rem && ((ISNEG(mp(anum)) && b > 0) ||
- (!ISNEG(mp(anum)) && b < 0)))
+ if (rem && ((mp_isneg(mp(anum)) && b > 0) ||
+ (!mp_isneg(mp(anum)) && b < 0)))
mpe = mp_sub_d(mp(n), 1, mp(n));
if (mpe != MP_OKAY)
do_mp_error(self, mpe);
@@ -1320,8 +1320,8 @@ tail:
goto divzero;
}
if (mp_cmp_z(&rem) != MP_EQ &&
- ((ISNEG(mp(anum)) && b > 0) ||
- (!ISNEG(mp(anum)) && b < 0)))
+ ((mp_isneg(mp(anum)) && b > 0) ||
+ (!mp_isneg(mp(anum)) && b < 0)))
mpe = mp_sub_d(mp(n), 1, mp(n));
mp_clear(&rem);
if (mpe != MP_OKAY)
@@ -1356,8 +1356,8 @@ tail:
goto divzero;
}
if (mp_cmp_z(&rem) != MP_EQ &&
- ((ISNEG(mp(anum)) && !ISNEG(mp(bnum))) ||
- (!ISNEG(mp(anum)) && ISNEG(mp(bnum)))))
+ ((mp_isneg(mp(anum)) && !mp_isneg(mp(bnum))) ||
+ (!mp_isneg(mp(anum)) && mp_isneg(mp(bnum)))))
mpe = mp_sub_d(mp(n), 1, mp(n));
mp_clear(&rem);
if (mpe != MP_OKAY)
diff --git a/mpi/mpi.c b/mpi/mpi.c
index ef91437b..ff11f2e2 100644
--- a/mpi/mpi.c
+++ b/mpi/mpi.c
@@ -74,6 +74,14 @@ static mp_size s_mp_defprec = MP_DEFPREC;
#define ARGCHK(X,Y)
#endif
+/* Nicknames for access macros */
+#define SIGN(MP) mp_sign(MP)
+#define ISNEG(MP) mp_isneg(MP)
+#define USED(MP) mp_used(MP)
+#define ALLOC(MP) mp_alloc(MP)
+#define DIGITS(MP) mp_digits(MP)
+#define DIGIT(MP,N) mp_digit(MP,N)
+
/* This defines the maximum I/O base (minimum is 2) */
#define MAX_RADIX 64
diff --git a/mpi/mpi.h b/mpi/mpi.h
index 0fd9b740..28fadb31 100644
--- a/mpi/mpi.h
+++ b/mpi/mpi.h
@@ -49,12 +49,12 @@ typedef struct {
} mp_int;
/* Macros for accessing the mp_int internals */
-#define SIGN(MP) ((MP)->sign)
-#define ISNEG(MP) ((MP)->sign == MP_NEG)
-#define USED(MP) ((MP)->used)
-#define ALLOC(MP) ((MP)->alloc)
-#define DIGITS(MP) ((MP)->dp)
-#define DIGIT(MP,N) (MP)->dp[(N)]
+#define mp_sign(MP) ((MP)->sign)
+#define mp_isneg(MP) ((MP)->sign == MP_NEG)
+#define mp_used(MP) ((MP)->used)
+#define mp_alloc(MP) ((MP)->alloc)
+#define mp_digits(MP) ((MP)->dp)
+#define mp_digit(MP,N) (MP)->dp[(N)]
#ifdef __GNUC__
#define mp_nign __attribute__((warn_unused_result))
@@ -68,7 +68,7 @@ void mp_set_prec(mp_size prec);
mp_err mp_init(mp_int *mp);
INLINE mp_err mp_init_minimal(mp_int *mp)
{
- DIGITS(mp) = 0;
+ mp_digits(mp) = 0;
return MP_OKAY;
}
mp_err mp_init_array(mp_int mp[], int count);
diff --git a/rand.c b/rand.c
index 3d280ef8..d5780d78 100644
--- a/rand.c
+++ b/rand.c
@@ -255,7 +255,7 @@ val random(val state, val modulus)
cobj_handle(self, state, random_state_s));
mp_int *m;
- if (bignump(modulus) && !ISNEG(m = mp(modulus))) {
+ if (bignump(modulus) && !mp_isneg(m = mp(modulus))) {
ucnum bits = mp_count_bits(m) - mp_is_pow_two(m);
ucnum rands_needed = (bits + 32 - 1) / 32;
ucnum msb_rand_bits = bits % 32;
diff --git a/sysif.c b/sysif.c
index 9d818bbb..dbf853f2 100644
--- a/sysif.c
+++ b/sysif.c
@@ -1349,29 +1349,29 @@ off_t off_t_num(val num)
mp_int *mpn = mp(num);
if (odig > 1) {
- if (USED(mpn) > odig)
+ if (mp_used(mpn) > odig)
goto toobig;
- if (USED(mpn) == odig &&
- (DIGITS(mpn)[USED(mpn) - 1] >> (MP_DIGIT_BIT - 1)) != 0)
+ if (mp_used(mpn) == odig &&
+ (mp_digits(mpn)[mp_used(mpn) - 1] >> (MP_DIGIT_BIT - 1)) != 0)
goto toobig;
- for (out = 0, i = USED(mpn) - 1; i >= 0; i--) {
+ for (out = 0, i = mp_used(mpn) - 1; i >= 0; i--) {
out <<= MP_DIGIT_BIT * (odig > 1);
- out |= DIGITS(mpn)[i];
+ out |= mp_digits(mpn)[i];
}
- return (ISNEG(mpn)) ? -out : out;
+ return (mp_isneg(mpn)) ? -out : out;
} else {
- mp_digit d = DIGITS(mpn)[0];
+ mp_digit d = mp_digits(mpn)[0];
- if (USED(mpn) > 1)
+ if (mp_used(mpn) > 1)
goto toobig;
if (d > OFF_T_MAX)
goto toobig;
- return (ISNEG(mpn)) ? d : -d;
+ return (mp_isneg(mpn)) ? d : -d;
}
}
default: