summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
Diffstat (limited to 'generic')
-rw-r--r--generic/tclBasic.c4
-rw-r--r--generic/tclExecute.c12
-rw-r--r--generic/tclScan.c2
-rw-r--r--generic/tclStrToD.c30
-rw-r--r--generic/tclStubInit.c2
-rw-r--r--generic/tclTomMath.decls5
-rw-r--r--generic/tclTomMath.h8
-rw-r--r--generic/tclTomMathDecls.h17
-rw-r--r--generic/tclUtil.c6
9 files changed, 36 insertions, 50 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index ff606f5..59f656a 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -7645,7 +7645,7 @@ ExprIsqrtFunc(
if (Tcl_GetBignumFromObj(interp, objv[1], &big) != TCL_OK) {
return TCL_ERROR;
}
- if (big.sign != MP_ZPOS) {
+ if (mp_isneg(&big)) {
mp_clear(&big);
goto negarg;
}
@@ -7919,7 +7919,7 @@ ExprAbsFunc(
}
if (type == TCL_NUMBER_BIG) {
- if (((const mp_int *) ptr)->sign != MP_ZPOS) {
+ if (mp_isneg((const mp_int *) ptr)) {
Tcl_GetBignumFromObj(NULL, objv[1], &big);
tooLarge:
mp_neg(&big, &big);
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 476806b..1bcedff 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -8067,7 +8067,7 @@ ExecuteExtendedBinaryMathOp(
Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
/* TODO: internals intrusion */
- if ((w1 > ((Tcl_WideInt) 0)) ^ (big2.sign == MP_ZPOS)) {
+ if ((w1 > ((Tcl_WideInt) 0)) ^ !mp_isneg(&big2)) {
/*
* Arguments are opposite sign; remainder is sum.
*/
@@ -8116,7 +8116,7 @@ ExecuteExtendedBinaryMathOp(
break;
case TCL_NUMBER_BIG:
Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
- invalid = big2.sign != MP_ZPOS;
+ invalid = mp_isneg(&big2);
mp_clear(&big2);
break;
default:
@@ -8195,7 +8195,7 @@ ExecuteExtendedBinaryMathOp(
break;
case TCL_NUMBER_BIG:
Tcl_TakeBignumFromObj(NULL, valuePtr, &big1);
- zero = (big1.sign == MP_ZPOS);
+ zero = !mp_isneg(&big1);
mp_clear(&big1);
break;
default:
@@ -8319,7 +8319,7 @@ ExecuteExtendedBinaryMathOp(
oddExponent = (int) (w2 & (Tcl_WideInt)1);
} else {
Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
- negativeExponent = big2.sign != MP_ZPOS;
+ negativeExponent = mp_isneg(&big2);
mp_mod_2d(&big2, 1, &big2);
oddExponent = big2.used != 0;
mp_clear(&big2);
@@ -8794,7 +8794,7 @@ TclCompareTwoNumbers(
goto wideCompare;
case TCL_NUMBER_BIG:
Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
- if (big2.sign != MP_ZPOS) {
+ if (mp_isneg(&big2)) {
compare = MP_GT;
} else {
compare = MP_LT;
@@ -8831,7 +8831,7 @@ TclCompareTwoNumbers(
}
Tcl_TakeBignumFromObj(NULL, value2Ptr, &big2);
if ((d1 < (double)WIDE_MAX) && (d1 > (double)WIDE_MIN)) {
- if (big2.sign != MP_ZPOS) {
+ if (mp_isneg(&big2)) {
compare = MP_GT;
} else {
compare = MP_LT;
diff --git a/generic/tclScan.c b/generic/tclScan.c
index dfcb1b1..f481cc9 100644
--- a/generic/tclScan.c
+++ b/generic/tclScan.c
@@ -942,7 +942,7 @@ Tcl_ScanObjCmd(
int code = Tcl_GetBignumFromObj(interp, objPtr, &big);
if (code == TCL_OK) {
- if (big.sign != MP_ZPOS) {
+ if (mp_isneg(&big)) {
code = TCL_ERROR;
}
mp_clear(&big);
diff --git a/generic/tclStrToD.c b/generic/tclStrToD.c
index 8828c15..866ee10 100644
--- a/generic/tclStrToD.c
+++ b/generic/tclStrToD.c
@@ -4545,10 +4545,10 @@ TclBignumToDouble(
bits = mp_count_bits(a);
if (bits > DBL_MAX_EXP*log2FLT_RADIX) {
errno = ERANGE;
- if (a->sign == MP_ZPOS) {
- return HUGE_VAL;
- } else {
+ if (mp_isneg(a)) {
return -HUGE_VAL;
+ } else {
+ return HUGE_VAL;
}
}
shift = mantBits - bits;
@@ -4578,10 +4578,10 @@ TclBignumToDouble(
mp_div_2d(a, -shift, &b, NULL);
if (mp_isodd(&b)) {
- if (b.sign == MP_ZPOS) {
- mp_add_d(&b, 1, &b);
- } else {
+ if (mp_isneg(&b)) {
mp_sub_d(&b, 1, &b);
+ } else {
+ mp_add_d(&b, 1, &b);
}
}
} else {
@@ -4591,10 +4591,10 @@ TclBignumToDouble(
*/
mp_div_2d(a, -1-shift, &b, NULL);
- if (b.sign == MP_ZPOS) {
- mp_add_d(&b, 1, &b);
- } else {
+ if (mp_isneg(&b)) {
mp_sub_d(&b, 1, &b);
+ } else {
+ mp_add_d(&b, 1, &b);
}
mp_div_2d(&b, 1, &b, NULL);
}
@@ -4620,10 +4620,10 @@ TclBignumToDouble(
* Return the result with the appropriate sign.
*/
- if (a->sign == MP_ZPOS) {
- return r;
- } else {
+ if (mp_isneg(a)) {
return -r;
+ } else {
+ return r;
}
}
@@ -4649,7 +4649,7 @@ TclCeil(
mp_int b;
mp_init(&b);
- if (a->sign != MP_ZPOS) {
+ if (mp_isneg(a)) {
mp_neg(a, &b);
r = -TclFloor(&b);
} else {
@@ -4706,7 +4706,7 @@ TclFloor(
mp_int b;
mp_init(&b);
- if (a->sign != MP_ZPOS) {
+ if (mp_isneg(a)) {
mp_neg(a, &b);
r = -TclCeil(&b);
} else {
@@ -4796,7 +4796,7 @@ BignumToBiasedFrExp(
*/
*machexp = bits - mantBits + 2;
- return ((a->sign == MP_ZPOS) ? r : -r);
+ return (mp_isneg(a) ? -r : r);
}
/*
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index 9bb7ec9..7fd8e40 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -1010,7 +1010,7 @@ const TclTomMathStubs tclTomMathStubs = {
TclBN_mp_get_mag_ull, /* 69 */
0, /* 70 */
TclBN_mp_get_mag_ul, /* 71 */
- TclBN_mp_isodd, /* 72 */
+ 0, /* 72 */
TclBN_mp_tc_and, /* 73 */
TclBN_mp_tc_or, /* 74 */
TclBN_mp_tc_xor, /* 75 */
diff --git a/generic/tclTomMath.decls b/generic/tclTomMath.decls
index 89751bd..e990a5c 100644
--- a/generic/tclTomMath.decls
+++ b/generic/tclTomMath.decls
@@ -245,10 +245,7 @@ declare 69 {
Tcl_WideUInt MP_WUR TclBN_mp_get_mag_ull(const mp_int *a)
}
declare 71 {
- unsigned long TclBN_mp_get_mag_ul(const mp_int *a)
-}
-declare 72 {
- mp_bool MP_WUR TclBN_mp_isodd(const mp_int *a)
+ unsigned long MP_WUR TclBN_mp_get_mag_ul(const mp_int *a)
}
# Added in libtommath 1.1.0
diff --git a/generic/tclTomMath.h b/generic/tclTomMath.h
index 5f93c19..557eff1 100644
--- a/generic/tclTomMath.h
+++ b/generic/tclTomMath.h
@@ -298,12 +298,8 @@ mp_err mp_init_size(mp_int *a, int size) MP_WUR;
/* ---> Basic Manipulations <--- */
#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO)
-/*
-mp_bool mp_iseven(const mp_int *a) MP_WUR;
-*/
-/*
-mp_bool mp_isodd(const mp_int *a) MP_WUR;
-*/
+#define mp_isodd(a) (((a)->used != 0 && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO)
+#define mp_iseven(a) (((a)->used == 0 || (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO)
#define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO)
/* set to zero */
diff --git a/generic/tclTomMathDecls.h b/generic/tclTomMathDecls.h
index 811727d..672635c 100644
--- a/generic/tclTomMathDecls.h
+++ b/generic/tclTomMathDecls.h
@@ -83,7 +83,6 @@
#define mp_init_set_int(a,i) (MP_DEPRECATED_PRAGMA("replaced by mp_init_ul") TclBN_mp_init_ul(a,(unsigned int)(i)))
#define mp_init_size TclBN_mp_init_size
#define mp_init_ul TclBN_mp_init_ul
-#define mp_isodd TclBN_mp_isodd
#define mp_lshd TclBN_mp_lshd
#define mp_mod TclBN_mp_mod
#define mp_mod_2d TclBN_mp_mod_2d
@@ -351,9 +350,8 @@ EXTERN void TclBN_mp_set_ull(mp_int *a, Tcl_WideUInt i);
EXTERN Tcl_WideUInt TclBN_mp_get_mag_ull(const mp_int *a) MP_WUR;
/* Slot 70 is reserved */
/* 71 */
-EXTERN unsigned long TclBN_mp_get_mag_ul(const mp_int *a);
-/* 72 */
-EXTERN mp_bool TclBN_mp_isodd(const mp_int *a) MP_WUR;
+EXTERN unsigned long TclBN_mp_get_mag_ul(const mp_int *a) MP_WUR;
+/* Slot 72 is reserved */
/* 73 */
EXTERN mp_err TclBN_mp_tc_and(const mp_int *a, const mp_int *b,
mp_int *c) MP_WUR;
@@ -452,8 +450,8 @@ typedef struct TclTomMathStubs {
void (*tclBN_mp_set_ull) (mp_int *a, Tcl_WideUInt i); /* 68 */
Tcl_WideUInt (*tclBN_mp_get_mag_ull) (const mp_int *a) MP_WUR; /* 69 */
void (*reserved70)(void);
- unsigned long (*tclBN_mp_get_mag_ul) (const mp_int *a); /* 71 */
- mp_bool (*tclBN_mp_isodd) (const mp_int *a) MP_WUR; /* 72 */
+ unsigned long (*tclBN_mp_get_mag_ul) (const mp_int *a) MP_WUR; /* 71 */
+ void (*reserved72)(void);
mp_err (*tclBN_mp_tc_and) (const mp_int *a, const mp_int *b, mp_int *c) MP_WUR; /* 73 */
mp_err (*tclBN_mp_tc_or) (const mp_int *a, const mp_int *b, mp_int *c) MP_WUR; /* 74 */
mp_err (*tclBN_mp_tc_xor) (const mp_int *a, const mp_int *b, mp_int *c) MP_WUR; /* 75 */
@@ -619,8 +617,7 @@ extern const TclTomMathStubs *tclTomMathStubsPtr;
/* Slot 70 is reserved */
#define TclBN_mp_get_mag_ul \
(tclTomMathStubsPtr->tclBN_mp_get_mag_ul) /* 71 */
-#define TclBN_mp_isodd \
- (tclTomMathStubsPtr->tclBN_mp_isodd) /* 72 */
+/* Slot 72 is reserved */
#define TclBN_mp_tc_and \
(tclTomMathStubsPtr->tclBN_mp_tc_and) /* 73 */
#define TclBN_mp_tc_or \
@@ -641,10 +638,6 @@ extern const TclTomMathStubs *tclTomMathStubsPtr;
/* !END!: Do not edit above this line. */
-#undef mp_isodd
-#define mp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? MP_YES : MP_NO)
-#define mp_iseven(a) (((a)->used == 0 || (((a)->dp[0] & 1) == 0)) ? MP_YES : MP_NO)
-
#undef TCL_STORAGE_CLASS
#define TCL_STORAGE_CLASS DLLIMPORT
diff --git a/generic/tclUtil.c b/generic/tclUtil.c
index 5c51216..9216380 100644
--- a/generic/tclUtil.c
+++ b/generic/tclUtil.c
@@ -3728,7 +3728,7 @@ GetWideForIndex(
/* objPtr holds an integer outside the signed wide range */
/* Truncate to the signed wide range. */
- *widePtr = (((mp_int *)cd)->sign != MP_ZPOS) ? WIDE_MIN : WIDE_MAX;
+ *widePtr = ((mp_isneg((mp_int *)cd)) ? WIDE_MIN : WIDE_MAX);
return TCL_OK;
}
@@ -3841,7 +3841,7 @@ GetWideForIndex(
} else {
/* sum holds an integer outside the signed wide range */
/* Truncate to the signed wide range. */
- if (((mp_int *)cd)->sign != MP_ZPOS) {
+ if (mp_isneg((mp_int *)cd)) {
*widePtr = WIDE_MIN;
} else {
*widePtr = WIDE_MAX;
@@ -3988,7 +3988,7 @@ GetEndOffsetFromObj(
if (t == TCL_NUMBER_BIG) {
/* Truncate to the signed wide range. */
- if (((mp_int *)cd)->sign != MP_ZPOS) {
+ if (mp_isneg((mp_int *)cd)) {
offset = (bytes[3] == '-') ? WIDE_MAX : WIDE_MIN;
} else {
offset = (bytes[3] == '-') ? WIDE_MIN : WIDE_MAX;