summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
Diffstat (limited to 'Include')
-rw-r--r--Include/longintrepr.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/Include/longintrepr.h b/Include/longintrepr.h
index 9ed1fe7..254076e 100644
--- a/Include/longintrepr.h
+++ b/Include/longintrepr.h
@@ -15,7 +15,8 @@ extern "C" {
(at most (BASE-1)*(2*BASE+1) == MASK*(2*MASK+3)).
Also, x_sub assumes that 'digit' is an unsigned type, and overflow
is handled by taking the result mod 2**N for some N > SHIFT.
- And, at some places it is assumed that MASK fits in an int, as well. */
+ And, at some places it is assumed that MASK fits in an int, as well.
+ long_pow() requires that SHIFT be divisible by 5. */
typedef unsigned short digit;
typedef unsigned int wdigit; /* digit widened to parameter size */
@@ -27,6 +28,10 @@ typedef BASE_TWODIGITS_TYPE stwodigits; /* signed variant of twodigits */
#define BASE ((digit)1 << SHIFT)
#define MASK ((int)(BASE - 1))
+#if SHIFT % 5 != 0
+#error "longobject.c requires that SHIFT be divisible by 5"
+#endif
+
/* Long integer representation.
The absolute value of a number is equal to
SUM(for i=0 through abs(ob_size)-1) ob_digit[i] * 2**(SHIFT*i)