Commit aca14126 authored by Damien George's avatar Damien George
Browse files

py: Fix mpn_sub, was increasing wrong source pointer.

Also change int -> machine_int_t where appropriate.
parent 2ee55c31
......@@ -113,7 +113,7 @@ uint mpn_sub(mpz_dig_t *idig, const mpz_dig_t *jdig, uint jlen, const mpz_dig_t
borrow >>= DIG_SIZE;
}
for (; jlen > 0; --jlen, ++idig, ++kdig) {
for (; jlen > 0; --jlen, ++idig, ++jdig) {
borrow += *jdig;
*idig = borrow & DIG_MASK;
borrow >>= DIG_SIZE;
......@@ -315,7 +315,7 @@ void mpn_div(mpz_dig_t *num_dig, machine_uint_t *num_len, mpz_dig_t *den_dig, ma
#define MIN_ALLOC (4)
#define ALIGN_ALLOC (2)
#define NUM_DIG_FOR_INT (sizeof(int) * 8 / DIG_SIZE + 1)
#define NUM_DIG_FOR_INT (sizeof(machine_int_t) * 8 / DIG_SIZE + 1)
static const uint log_base2_floor[] = {
0,
......@@ -329,7 +329,7 @@ static const uint log_base2_floor[] = {
4, 4, 4, 5
};
bool mpz_int_is_sml_int(int i) {
bool mpz_int_is_sml_int(machine_int_t i) {
return -(1 << DIG_SIZE) < i && i < (1 << DIG_SIZE);
}
......@@ -497,7 +497,7 @@ int mpz_cmp(const mpz_t *z1, const mpz_t *z2) {
return cmp;
}
int mpz_cmp_sml_int(const mpz_t *z, int sml_int) {
int mpz_cmp_sml_int(const mpz_t *z, machine_int_t sml_int) {
int cmp;
if (z->neg == 0) {
if (sml_int < 0) return 1;
......@@ -885,13 +885,13 @@ mpz_t *mpz_mod(const mpz_t *lhs, const mpz_t *rhs) {
}
#endif
int mpz_as_int(const mpz_t *i) {
int val = 0;
machine_int_t mpz_as_int(const mpz_t *i) {
machine_int_t val = 0;
mpz_dig_t *d = i->dig + i->len;
while (--d >= i->dig)
{
int oldval = val;
machine_int_t oldval = val;
val = (val << DIG_SIZE) | *d;
if (val < oldval)
{
......
......@@ -11,7 +11,7 @@ typedef struct _mpz_t {
mpz_dig_t *dig;
} mpz_t;
bool mpz_int_is_sml_int(int i);
bool mpz_int_is_sml_int(machine_int_t i);
void mpz_init_zero(mpz_t *z);
void mpz_init_from_int(mpz_t *z, machine_int_t val);
......@@ -35,7 +35,7 @@ bool mpz_is_odd(const mpz_t *z);
bool mpz_is_even(const mpz_t *z);
int mpz_cmp(const mpz_t *lhs, const mpz_t *rhs);
int mpz_cmp_sml_int(const mpz_t *lhs, int sml_int);
int mpz_cmp_sml_int(const mpz_t *lhs, machine_int_t sml_int);
mpz_t *mpz_abs(const mpz_t *z);
mpz_t *mpz_neg(const mpz_t *z);
......@@ -58,7 +58,7 @@ void mpz_divmod_inpl(mpz_t *dest_quo, mpz_t *dest_rem, const mpz_t *lhs, const m
mpz_t *mpz_div(const mpz_t *lhs, const mpz_t *rhs);
mpz_t *mpz_mod(const mpz_t *lhs, const mpz_t *rhs);
int mpz_as_int(const mpz_t *z);
machine_int_t mpz_as_int(const mpz_t *z);
machine_float_t mpz_as_float(const mpz_t *z);
uint mpz_as_str_size(const mpz_t *z, uint base);
char *mpz_as_str(const mpz_t *z, uint base);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment