diff options
Diffstat (limited to 'Python/dtoa.c')
-rw-r--r-- | Python/dtoa.c | 125 |
1 files changed, 6 insertions, 119 deletions
diff --git a/Python/dtoa.c b/Python/dtoa.c index 3da546e..efcadc3 100644 --- a/Python/dtoa.c +++ b/Python/dtoa.c @@ -151,18 +151,9 @@ #endif -#if defined(HAVE_UINT32_T) && defined(HAVE_INT32_T) -typedef PY_UINT32_T ULong; -typedef PY_INT32_T Long; -#else -#error "Failed to find an exact-width 32-bit integer type" -#endif - -#if defined(HAVE_UINT64_T) -#define ULLong PY_UINT64_T -#else -#undef ULLong -#endif +typedef uint32_t ULong; +typedef int32_t Long; +typedef uint64_t ULLong; #undef DEBUG #ifdef Py_DEBUG @@ -457,13 +448,8 @@ static Bigint * multadd(Bigint *b, int m, int a) /* multiply by m and add a */ { int i, wds; -#ifdef ULLong ULong *x; ULLong carry, y; -#else - ULong carry, *x, y; - ULong xi, z; -#endif Bigint *b1; wds = b->wds; @@ -471,17 +457,9 @@ multadd(Bigint *b, int m, int a) /* multiply by m and add a */ i = 0; carry = a; do { -#ifdef ULLong y = *x * (ULLong)m + carry; carry = y >> 32; *x++ = (ULong)(y & FFFFFFFF); -#else - xi = *x; - y = (xi & 0xffff) * m + carry; - z = (xi >> 16) * m + (y >> 16); - carry = z >> 16; - *x++ = (z << 16) + (y & 0xffff); -#endif } while(++i < wds); if (carry) { @@ -642,12 +620,7 @@ mult(Bigint *a, Bigint *b) int k, wa, wb, wc; ULong *x, *xa, *xae, *xb, *xbe, *xc, *xc0; ULong y; -#ifdef ULLong ULLong carry, z; -#else - ULong carry, z; - ULong z2; -#endif if ((!a->x[0] && a->wds == 1) || (!b->x[0] && b->wds == 1)) { c = Balloc(0); @@ -679,7 +652,6 @@ mult(Bigint *a, Bigint *b) xb = b->x; xbe = xb + wb; xc0 = c->x; -#ifdef ULLong for(; xb < xbe; xc0++) { if ((y = *xb++)) { x = xa; @@ -694,39 +666,6 @@ mult(Bigint *a, Bigint *b) *xc = (ULong)carry; } } -#else - for(; xb < xbe; xb++, xc0++) { - if (y = *xb & 0xffff) { - x = xa; - xc = xc0; - carry = 0; - do { - z = (*x & 0xffff) * y + (*xc & 0xffff) + carry; - carry = z >> 16; - z2 = (*x++ >> 16) * y + (*xc >> 16) + carry; - carry = z2 >> 16; - Storeinc(xc, z2, z); - } - while(x < xae); - *xc = carry; - } - if (y = *xb >> 16) { - x = xa; - xc = xc0; - carry = 0; - z2 = *xc; - do { - z = (*x & 0xffff) * y + (*xc >> 16) + carry; - carry = z >> 16; - Storeinc(xc, z, z2); - z2 = (*x++ >> 16) * y + (*xc & 0xffff) + carry; - carry = z2 >> 16; - } - while(x < xae); - *xc = z2; - } - } -#endif for(xc0 = c->x, xc = xc0 + wc; wc > 0 && !*--xc; --wc) ; c->wds = wc; return c; @@ -747,7 +686,7 @@ pow5mult(Bigint *b, int k) { Bigint *b1, *p5, *p51; int i; - static int p05[3] = { 5, 25, 125 }; + static const int p05[3] = { 5, 25, 125 }; if ((i = k & 3)) { b = multadd(b, p05[i-1], 0); @@ -803,7 +742,7 @@ pow5mult(Bigint *b, int k) { Bigint *b1, *p5, *p51; int i; - static int p05[3] = { 5, 25, 125 }; + static const int p05[3] = { 5, 25, 125 }; if ((i = k & 3)) { b = multadd(b, p05[i-1], 0); @@ -935,12 +874,7 @@ diff(Bigint *a, Bigint *b) Bigint *c; int i, wa, wb; ULong *xa, *xae, *xb, *xbe, *xc; -#ifdef ULLong ULLong borrow, y; -#else - ULong borrow, y; - ULong z; -#endif i = cmp(a,b); if (!i) { @@ -971,7 +905,6 @@ diff(Bigint *a, Bigint *b) xbe = xb + wb; xc = c->x; borrow = 0; -#ifdef ULLong do { y = (ULLong)*xa++ - *xb++ - borrow; borrow = y >> 32 & (ULong)1; @@ -983,23 +916,6 @@ diff(Bigint *a, Bigint *b) borrow = y >> 32 & (ULong)1; *xc++ = (ULong)(y & FFFFFFFF); } -#else - do { - y = (*xa & 0xffff) - (*xb & 0xffff) - borrow; - borrow = (y & 0x10000) >> 16; - z = (*xa++ >> 16) - (*xb++ >> 16) - borrow; - borrow = (z & 0x10000) >> 16; - Storeinc(xc, z, y); - } - while(xb < xbe); - while(xa < xae) { - y = (*xa & 0xffff) - borrow; - borrow = (y & 0x10000) >> 16; - z = (*xa++ >> 16) - borrow; - borrow = (z & 0x10000) >> 16; - Storeinc(xc, z, y); - } -#endif while(!*--xc) wa--; c->wds = wa; @@ -1244,12 +1160,7 @@ quorem(Bigint *b, Bigint *S) { int n; ULong *bx, *bxe, q, *sx, *sxe; -#ifdef ULLong ULLong borrow, carry, y, ys; -#else - ULong borrow, carry, y, ys; - ULong si, z, zs; -#endif n = S->wds; #ifdef DEBUG @@ -1271,23 +1182,11 @@ quorem(Bigint *b, Bigint *S) borrow = 0; carry = 0; do { -#ifdef ULLong ys = *sx++ * (ULLong)q + carry; carry = ys >> 32; y = *bx - (ys & FFFFFFFF) - borrow; borrow = y >> 32 & (ULong)1; *bx++ = (ULong)(y & FFFFFFFF); -#else - si = *sx++; - ys = (si & 0xffff) * q + carry; - zs = (si >> 16) * q + (ys >> 16); - carry = zs >> 16; - y = (*bx & 0xffff) - (ys & 0xffff) - borrow; - borrow = (y & 0x10000) >> 16; - z = (*bx >> 16) - (zs & 0xffff) - borrow; - borrow = (z & 0x10000) >> 16; - Storeinc(bx, z, y); -#endif } while(sx <= sxe); if (!*bxe) { @@ -1304,23 +1203,11 @@ quorem(Bigint *b, Bigint *S) bx = b->x; sx = S->x; do { -#ifdef ULLong ys = *sx++ + carry; carry = ys >> 32; y = *bx - (ys & FFFFFFFF) - borrow; borrow = y >> 32 & (ULong)1; *bx++ = (ULong)(y & FFFFFFFF); -#else - si = *sx++; - ys = (si & 0xffff) + carry; - zs = (si >> 16) + (ys >> 16); - carry = zs >> 16; - y = (*bx & 0xffff) - (ys & 0xffff) - borrow; - borrow = (y & 0x10000) >> 16; - z = (*bx >> 16) - (zs & 0xffff) - borrow; - borrow = (z & 0x10000) >> 16; - Storeinc(bx, z, y); -#endif } while(sx <= sxe); bx = b->x; @@ -2315,7 +2202,7 @@ rv_alloc(int i) } static char * -nrv_alloc(char *s, char **rve, int n) +nrv_alloc(const char *s, char **rve, int n) { char *rv, *t; |