37,8 → 37,7 |
#define ABSVAL(x) ((x) > 0 ? (x) : -(x)) |
#define SGN(x) ((x) >= 0 ? 1 : 0) |
|
static unsigned int divandmod32(unsigned int a, unsigned int b, |
unsigned int *remainder) |
static unsigned int divandmod32(unsigned int a, unsigned int b, unsigned int *remainder) |
{ |
unsigned int result; |
int steps = sizeof(unsigned int) * 8; |
72,8 → 71,7 |
} |
|
|
static unsigned long long divandmod64(unsigned long long a, |
unsigned long long b, unsigned long long *remainder) |
static unsigned long long divandmod64(unsigned long long a, unsigned long long b, unsigned long long *remainder) |
{ |
unsigned long long result; |
int steps = sizeof(unsigned long long) * 8; |
114,8 → 112,7 |
|
result = (int) divandmod32(ABSVAL(a), ABSVAL(b), &rem); |
|
if (SGN(a) == SGN(b)) |
return result; |
if ( SGN(a) == SGN(b)) return result; |
return -result; |
} |
|
127,8 → 124,7 |
|
result = (long long) divandmod64(ABSVAL(a), ABSVAL(b), &rem); |
|
if (SGN(a) == SGN(b)) |
return result; |
if ( SGN(a) == SGN(b)) return result; |
return -result; |
} |
|
190,8 → 186,7 |
return rem; |
} |
|
unsigned long long __udivmoddi3(unsigned long long a, unsigned long long b, |
unsigned long long *c) |
unsigned long long __udivmoddi3(unsigned long long a, unsigned long long b, unsigned long long *c) |
{ |
return divandmod64(a, b, c); |
} |