OLD | NEW |
1 /* | 1 /* |
2 * mpi.h | 2 * mpi.h |
3 * | 3 * |
4 * Arbitrary precision integer arithmetic library | 4 * Arbitrary precision integer arithmetic library |
5 * | 5 * |
6 * This Source Code Form is subject to the terms of the Mozilla Public | 6 * This Source Code Form is subject to the terms of the Mozilla Public |
7 * License, v. 2.0. If a copy of the MPL was not distributed with this | 7 * License, v. 2.0. If a copy of the MPL was not distributed with this |
8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 8 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
9 | 9 |
10 #ifndef _H_MPI_ | 10 #ifndef _H_MPI_ |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 #define MP_32BIT_MAX 4294967295U | 49 #define MP_32BIT_MAX 4294967295U |
50 | 50 |
51 #if !defined(ULONG_MAX) | 51 #if !defined(ULONG_MAX) |
52 #error "ULONG_MAX not defined" | 52 #error "ULONG_MAX not defined" |
53 #elif !defined(UINT_MAX) | 53 #elif !defined(UINT_MAX) |
54 #error "UINT_MAX not defined" | 54 #error "UINT_MAX not defined" |
55 #elif !defined(USHRT_MAX) | 55 #elif !defined(USHRT_MAX) |
56 #error "USHRT_MAX not defined" | 56 #error "USHRT_MAX not defined" |
57 #endif | 57 #endif |
58 | 58 |
59 #if defined(ULONG_LONG_MAX)» » » /* GCC, HPUX */ | 59 #if defined(ULLONG_MAX)»» » » /* C99, Solaris */ |
60 #define MP_ULONG_LONG_MAX ULONG_LONG_MAX | |
61 #elif defined(ULLONG_MAX)» » » /* Solaris */ | |
62 #define MP_ULONG_LONG_MAX ULLONG_MAX | 60 #define MP_ULONG_LONG_MAX ULLONG_MAX |
63 /* MP_ULONG_LONG_MAX was defined to be ULLONG_MAX */ | 61 /* MP_ULONG_LONG_MAX was defined to be ULLONG_MAX */ |
| 62 #elif defined(ULONG_LONG_MAX) /* HPUX */ |
| 63 #define MP_ULONG_LONG_MAX ULONG_LONG_MAX |
64 #elif defined(ULONGLONG_MAX) /* IRIX, AIX */ | 64 #elif defined(ULONGLONG_MAX) /* IRIX, AIX */ |
65 #define MP_ULONG_LONG_MAX ULONGLONG_MAX | 65 #define MP_ULONG_LONG_MAX ULONGLONG_MAX |
66 #endif | 66 #endif |
67 | 67 |
68 /* We only use unsigned long for mp_digit iff long is more than 32 bits. */ | 68 /* We only use unsigned long for mp_digit iff long is more than 32 bits. */ |
69 #if !defined(MP_USE_UINT_DIGIT) && ULONG_MAX > MP_32BIT_MAX | 69 #if !defined(MP_USE_UINT_DIGIT) && ULONG_MAX > MP_32BIT_MAX |
70 typedef unsigned long mp_digit; | 70 typedef unsigned long mp_digit; |
71 #define MP_DIGIT_MAX ULONG_MAX | 71 #define MP_DIGIT_MAX ULONG_MAX |
72 #define MP_DIGIT_FMT "%016lX" /* printf() format for 1 digit */ | 72 #define MP_DIGIT_FMT "%016lX" /* printf() format for 1 digit */ |
73 #define MP_HALF_DIGIT_MAX UINT_MAX | 73 #define MP_HALF_DIGIT_MAX UINT_MAX |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 #define ARGCHK(X,Y) {if(!(X)){return (Y);}} | 291 #define ARGCHK(X,Y) {if(!(X)){return (Y);}} |
292 #elif MP_ARGCHK == 2 | 292 #elif MP_ARGCHK == 2 |
293 #include <assert.h> | 293 #include <assert.h> |
294 #define ARGCHK(X,Y) assert(X) | 294 #define ARGCHK(X,Y) assert(X) |
295 #else | 295 #else |
296 #define ARGCHK(X,Y) /* */ | 296 #define ARGCHK(X,Y) /* */ |
297 #endif | 297 #endif |
298 #endif /* defined MP_API_COMPATIBLE */ | 298 #endif /* defined MP_API_COMPATIBLE */ |
299 | 299 |
300 #endif /* end _H_MPI_ */ | 300 #endif /* end _H_MPI_ */ |
OLD | NEW |