/src/wget_deps/include/gmp.h
Line  | Count  | Source (jump to first uncovered line)  | 
1  |  | /* Definitions for GNU multiple precision functions.   -*- mode: c -*-  | 
2  |  |  | 
3  |  | Copyright 1991, 1993-1997, 1999-2016, 2020, 2021 Free Software  | 
4  |  | Foundation, Inc.  | 
5  |  |  | 
6  |  | This file is part of the GNU MP Library.  | 
7  |  |  | 
8  |  | The GNU MP Library is free software; you can redistribute it and/or modify  | 
9  |  | it under the terms of either:  | 
10  |  |  | 
11  |  |   * the GNU Lesser General Public License as published by the Free  | 
12  |  |     Software Foundation; either version 3 of the License, or (at your  | 
13  |  |     option) any later version.  | 
14  |  |  | 
15  |  | or  | 
16  |  |  | 
17  |  |   * the GNU General Public License as published by the Free Software  | 
18  |  |     Foundation; either version 2 of the License, or (at your option) any  | 
19  |  |     later version.  | 
20  |  |  | 
21  |  | or both in parallel, as here.  | 
22  |  |  | 
23  |  | The GNU MP Library is distributed in the hope that it will be useful, but  | 
24  |  | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  | 
25  |  | or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License  | 
26  |  | for more details.  | 
27  |  |  | 
28  |  | You should have received copies of the GNU General Public License and the  | 
29  |  | GNU Lesser General Public License along with the GNU MP Library.  If not,  | 
30  |  | see https://www.gnu.org/licenses/.  */  | 
31  |  |  | 
32  |  | #ifndef __GMP_H__  | 
33  |  |  | 
34  |  | #if defined (__cplusplus)  | 
35  |  | #include <iosfwd>   /* for std::istream, std::ostream, std::string */  | 
36  |  | #include <cstdio>  | 
37  |  | #endif  | 
38  |  |  | 
39  |  |  | 
40  |  | /* Instantiated by configure. */  | 
41  |  | #if ! defined (__GMP_WITHIN_CONFIGURE)  | 
42  |  | #define __GMP_HAVE_HOST_CPU_FAMILY_power   0  | 
43  |  | #define __GMP_HAVE_HOST_CPU_FAMILY_powerpc 0  | 
44  | 0  | #define GMP_LIMB_BITS                      64  | 
45  | 0  | #define GMP_NAIL_BITS                      0  | 
46  |  | #endif  | 
47  | 0  | #define GMP_NUMB_BITS     (GMP_LIMB_BITS - GMP_NAIL_BITS)  | 
48  | 0  | #define GMP_NUMB_MASK     ((~ __GMP_CAST (mp_limb_t, 0)) >> GMP_NAIL_BITS)  | 
49  |  | #define GMP_NUMB_MAX      GMP_NUMB_MASK  | 
50  |  | #define GMP_NAIL_MASK     (~ GMP_NUMB_MASK)  | 
51  |  |  | 
52  |  |  | 
53  |  | #ifndef __GNU_MP__  | 
54  |  | #define __GNU_MP__ 6  | 
55  |  |  | 
56  |  | #include <stddef.h>    /* for size_t */  | 
57  |  | #include <limits.h>  | 
58  |  |  | 
59  |  | /* Instantiated by configure. */  | 
60  |  | #if ! defined (__GMP_WITHIN_CONFIGURE)  | 
61  |  | /* #undef _LONG_LONG_LIMB */  | 
62  |  | #define __GMP_LIBGMP_DLL  0  | 
63  |  | #endif  | 
64  |  |  | 
65  |  |  | 
66  |  | /* __GMP_DECLSPEC supports Windows DLL versions of libgmp, and is empty in  | 
67  |  |    all other circumstances.  | 
68  |  |  | 
69  |  |    When compiling objects for libgmp, __GMP_DECLSPEC is an export directive,  | 
70  |  |    or when compiling for an application it's an import directive.  The two  | 
71  |  |    cases are differentiated by __GMP_WITHIN_GMP defined by the GMP Makefiles  | 
72  |  |    (and not defined from an application).  | 
73  |  |  | 
74  |  |    __GMP_DECLSPEC_XX is similarly used for libgmpxx.  __GMP_WITHIN_GMPXX  | 
75  |  |    indicates when building libgmpxx, and in that case libgmpxx functions are  | 
76  |  |    exports, but libgmp functions which might get called are imports.  | 
77  |  |  | 
78  |  |    Libtool DLL_EXPORT define is not used.  | 
79  |  |  | 
80  |  |    There's no attempt to support GMP built both static and DLL.  Doing so  | 
81  |  |    would mean applications would have to tell us which of the two is going  | 
82  |  |    to be used when linking, and that seems very tedious and error prone if  | 
83  |  |    using GMP by hand, and equally tedious from a package since autoconf and  | 
84  |  |    automake don't give much help.  | 
85  |  |  | 
86  |  |    __GMP_DECLSPEC is required on all documented global functions and  | 
87  |  |    variables, the various internals in gmp-impl.h etc can be left unadorned.  | 
88  |  |    But internals used by the test programs or speed measuring programs  | 
89  |  |    should have __GMP_DECLSPEC, and certainly constants or variables must  | 
90  |  |    have it or the wrong address will be resolved.  | 
91  |  |  | 
92  |  |    In gcc __declspec can go at either the start or end of a prototype.  | 
93  |  |  | 
94  |  |    In Microsoft C __declspec must go at the start, or after the type like  | 
95  |  |    void __declspec(...) *foo()".  There's no __dllexport or anything to  | 
96  |  |    guard against someone foolish #defining dllexport.  _export used to be  | 
97  |  |    available, but no longer.  | 
98  |  |  | 
99  |  |    In Borland C _export still exists, but needs to go after the type, like  | 
100  |  |    "void _export foo();".  Would have to change the __GMP_DECLSPEC syntax to  | 
101  |  |    make use of that.  Probably more trouble than it's worth.  */  | 
102  |  |  | 
103  |  | #if defined (__GNUC__)  | 
104  |  | #define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)  | 
105  |  | #define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)  | 
106  |  | #endif  | 
107  |  | #if defined (_MSC_VER) || defined (__BORLANDC__)  | 
108  |  | #define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)  | 
109  |  | #define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)  | 
110  |  | #endif  | 
111  |  | #ifdef __WATCOMC__  | 
112  |  | #define __GMP_DECLSPEC_EXPORT  __export  | 
113  |  | #define __GMP_DECLSPEC_IMPORT  __import  | 
114  |  | #endif  | 
115  |  | #ifdef __IBMC__  | 
116  |  | #define __GMP_DECLSPEC_EXPORT  _Export  | 
117  |  | #define __GMP_DECLSPEC_IMPORT  _Import  | 
118  |  | #endif  | 
119  |  |  | 
120  |  | #if __GMP_LIBGMP_DLL  | 
121  |  | #ifdef __GMP_WITHIN_GMP  | 
122  |  | /* compiling to go into a DLL libgmp */  | 
123  |  | #define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT  | 
124  |  | #else  | 
125  |  | /* compiling to go into an application which will link to a DLL libgmp */  | 
126  |  | #define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT  | 
127  |  | #endif  | 
128  |  | #else  | 
129  |  | /* all other cases */  | 
130  |  | #define __GMP_DECLSPEC  | 
131  |  | #endif  | 
132  |  |  | 
133  |  |  | 
134  |  | #ifdef __GMP_SHORT_LIMB  | 
135  |  | typedef unsigned int    mp_limb_t;  | 
136  |  | typedef int     mp_limb_signed_t;  | 
137  |  | #else  | 
138  |  | #ifdef _LONG_LONG_LIMB  | 
139  |  | typedef unsigned long long int  mp_limb_t;  | 
140  |  | typedef long long int   mp_limb_signed_t;  | 
141  |  | #else  | 
142  |  | typedef unsigned long int mp_limb_t;  | 
143  |  | typedef long int    mp_limb_signed_t;  | 
144  |  | #endif  | 
145  |  | #endif  | 
146  |  | typedef unsigned long int mp_bitcnt_t;  | 
147  |  |  | 
148  |  | /* For reference, note that the name __mpz_struct gets into C++ mangled  | 
149  |  |    function names, which means although the "__" suggests an internal, we  | 
150  |  |    must leave this name for binary compatibility.  */  | 
151  |  | typedef struct  | 
152  |  | { | 
153  |  |   int _mp_alloc;    /* Number of *limbs* allocated and pointed  | 
154  |  |            to by the _mp_d field.  */  | 
155  |  |   int _mp_size;     /* abs(_mp_size) is the number of limbs the  | 
156  |  |            last field points to.  If _mp_size is  | 
157  |  |            negative this is a negative number.  */  | 
158  |  |   mp_limb_t *_mp_d;   /* Pointer to the limbs.  */  | 
159  |  | } __mpz_struct;  | 
160  |  |  | 
161  |  | #endif /* __GNU_MP__ */  | 
162  |  |  | 
163  |  |  | 
164  |  | typedef __mpz_struct MP_INT;    /* gmp 1 source compatibility */  | 
165  |  | typedef __mpz_struct mpz_t[1];  | 
166  |  |  | 
167  |  | typedef mp_limb_t *   mp_ptr;  | 
168  |  | typedef const mp_limb_t * mp_srcptr;  | 
169  |  | #if defined (_CRAY) && ! defined (_CRAYMPP)  | 
170  |  | /* plain `int' is much faster (48 bits) */  | 
171  |  | #define __GMP_MP_SIZE_T_INT     1  | 
172  |  | typedef int     mp_size_t;  | 
173  |  | typedef int     mp_exp_t;  | 
174  |  | #else  | 
175  |  | #define __GMP_MP_SIZE_T_INT     0  | 
176  |  | typedef long int    mp_size_t;  | 
177  |  | typedef long int    mp_exp_t;  | 
178  |  | #endif  | 
179  |  |  | 
180  |  | typedef struct  | 
181  |  | { | 
182  |  |   __mpz_struct _mp_num;  | 
183  |  |   __mpz_struct _mp_den;  | 
184  |  | } __mpq_struct;  | 
185  |  |  | 
186  |  | typedef __mpq_struct MP_RAT;    /* gmp 1 source compatibility */  | 
187  |  | typedef __mpq_struct mpq_t[1];  | 
188  |  |  | 
189  |  | typedef struct  | 
190  |  | { | 
191  |  |   int _mp_prec;     /* Max precision, in number of `mp_limb_t's.  | 
192  |  |            Set by mpf_init and modified by  | 
193  |  |            mpf_set_prec.  The area pointed to by the  | 
194  |  |            _mp_d field contains `prec' + 1 limbs.  */  | 
195  |  |   int _mp_size;     /* abs(_mp_size) is the number of limbs the  | 
196  |  |            last field points to.  If _mp_size is  | 
197  |  |            negative this is a negative number.  */  | 
198  |  |   mp_exp_t _mp_exp;   /* Exponent, in the base of `mp_limb_t'.  */  | 
199  |  |   mp_limb_t *_mp_d;   /* Pointer to the limbs.  */  | 
200  |  | } __mpf_struct;  | 
201  |  |  | 
202  |  | /* typedef __mpf_struct MP_FLOAT; */  | 
203  |  | typedef __mpf_struct mpf_t[1];  | 
204  |  |  | 
205  |  | /* Available random number generation algorithms.  */  | 
206  |  | typedef enum  | 
207  |  | { | 
208  |  |   GMP_RAND_ALG_DEFAULT = 0,  | 
209  |  |   GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT /* Linear congruential.  */  | 
210  |  | } gmp_randalg_t;  | 
211  |  |  | 
212  |  | /* Random state struct.  */  | 
213  |  | typedef struct  | 
214  |  | { | 
215  |  |   mpz_t _mp_seed;   /* _mp_d member points to state of the generator. */  | 
216  |  |   gmp_randalg_t _mp_alg;  /* Currently unused. */  | 
217  |  |   union { | 
218  |  |     void *_mp_lc;         /* Pointer to function pointers structure.  */  | 
219  |  |   } _mp_algdata;  | 
220  |  | } __gmp_randstate_struct;  | 
221  |  | typedef __gmp_randstate_struct gmp_randstate_t[1];  | 
222  |  |  | 
223  |  | /* Types for function declarations in gmp files.  */  | 
224  |  | /* ??? Should not pollute user name space with these ??? */  | 
225  |  | typedef const __mpz_struct *mpz_srcptr;  | 
226  |  | typedef __mpz_struct *mpz_ptr;  | 
227  |  | typedef const __mpf_struct *mpf_srcptr;  | 
228  |  | typedef __mpf_struct *mpf_ptr;  | 
229  |  | typedef const __mpq_struct *mpq_srcptr;  | 
230  |  | typedef __mpq_struct *mpq_ptr;  | 
231  |  | typedef __gmp_randstate_struct *gmp_randstate_ptr;  | 
232  |  | typedef const __gmp_randstate_struct *gmp_randstate_srcptr;  | 
233  |  |  | 
234  |  |  | 
235  |  | #if __GMP_LIBGMP_DLL  | 
236  |  | #ifdef __GMP_WITHIN_GMPXX  | 
237  |  | /* compiling to go into a DLL libgmpxx */  | 
238  |  | #define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_EXPORT  | 
239  |  | #else  | 
240  |  | /* compiling to go into a application which will link to a DLL libgmpxx */  | 
241  |  | #define __GMP_DECLSPEC_XX  __GMP_DECLSPEC_IMPORT  | 
242  |  | #endif  | 
243  |  | #else  | 
244  |  | /* all other cases */  | 
245  |  | #define __GMP_DECLSPEC_XX  | 
246  |  | #endif  | 
247  |  |  | 
248  |  |  | 
249  |  | #ifndef __MPN  | 
250  | 0  | #define __MPN(x) __gmpn_##x  | 
251  |  | #endif  | 
252  |  |  | 
253  |  | /* For reference, "defined(EOF)" cannot be used here.  In g++ 2.95.4,  | 
254  |  |    <iostream> defines EOF but not FILE.  */  | 
255  |  | #if defined (FILE)                                              \  | 
256  |  |   || defined (H_STDIO)                                          \  | 
257  |  |   || defined (_H_STDIO)               /* AIX */                 \  | 
258  |  |   || defined (_STDIO_H)               /* glibc, Sun, SCO */     \  | 
259  |  |   || defined (_STDIO_H_)              /* BSD, OSF */            \  | 
260  |  |   || defined (__STDIO_H)              /* Borland */             \  | 
261  |  |   || defined (__STDIO_H__)            /* IRIX */                \  | 
262  |  |   || defined (_STDIO_INCLUDED)        /* HPUX */                \  | 
263  |  |   || defined (__dj_include_stdio_h_)  /* DJGPP */               \  | 
264  |  |   || defined (_FILE_DEFINED)          /* Microsoft */           \  | 
265  |  |   || defined (__STDIO__)              /* Apple MPW MrC */       \  | 
266  |  |   || defined (_MSL_STDIO_H)           /* Metrowerks */          \  | 
267  |  |   || defined (_STDIO_H_INCLUDED)      /* QNX4 */    \  | 
268  |  |   || defined (_ISO_STDIO_ISO_H)       /* Sun C++ */   \  | 
269  |  |   || defined (__STDIO_LOADED)         /* VMS */     \  | 
270  |  |   || defined (_STDIO)                 /* HPE NonStop */         \  | 
271  |  |   || defined (__DEFINED_FILE)         /* musl */  | 
272  |  | #define _GMP_H_HAVE_FILE 1  | 
273  |  | #endif  | 
274  |  |  | 
275  |  | /* In ISO C, if a prototype involving "struct obstack *" is given without  | 
276  |  |    that structure defined, then the struct is scoped down to just the  | 
277  |  |    prototype, causing a conflict if it's subsequently defined for real.  So  | 
278  |  |    only give prototypes if we've got obstack.h.  */  | 
279  |  | #if defined (_OBSTACK_H)   /* glibc <obstack.h> */  | 
280  |  | #define _GMP_H_HAVE_OBSTACK 1  | 
281  |  | #endif  | 
282  |  |  | 
283  |  | /* The prototypes for gmp_vprintf etc are provided only if va_list is defined,  | 
284  |  |    via an application having included <stdarg.h>.  Usually va_list is a typedef  | 
285  |  |    so can't be tested directly, but C99 specifies that va_start is a macro.  | 
286  |  |  | 
287  |  |    <stdio.h> will define some sort of va_list for vprintf and vfprintf, but  | 
288  |  |    let's not bother trying to use that since it's not standard and since  | 
289  |  |    application uses for gmp_vprintf etc will almost certainly require the  | 
290  |  |    whole <stdarg.h> anyway.  */  | 
291  |  |  | 
292  |  | #ifdef va_start  | 
293  |  | #define _GMP_H_HAVE_VA_LIST 1  | 
294  |  | #endif  | 
295  |  |  | 
296  |  | /* Test for gcc >= maj.min, as per __GNUC_PREREQ in glibc */  | 
297  |  | #if defined (__GNUC__) && defined (__GNUC_MINOR__)  | 
298  |  | #define __GMP_GNUC_PREREQ(maj, min) \  | 
299  |  |   ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))  | 
300  |  | #else  | 
301  |  | #define __GMP_GNUC_PREREQ(maj, min)  0  | 
302  |  | #endif  | 
303  |  |  | 
304  |  | /* "pure" is in gcc 2.96 and up, see "(gcc)Function Attributes".  Basically  | 
305  |  |    it means a function does nothing but examine its arguments and memory  | 
306  |  |    (global or via arguments) to generate a return value, but changes nothing  | 
307  |  |    and has no side-effects.  __GMP_NO_ATTRIBUTE_CONST_PURE lets  | 
308  |  |    tune/common.c etc turn this off when trying to write timing loops.  */  | 
309  |  | #if __GMP_GNUC_PREREQ (2,96) && ! defined (__GMP_NO_ATTRIBUTE_CONST_PURE)  | 
310  |  | #define __GMP_ATTRIBUTE_PURE   __attribute__ ((__pure__))  | 
311  |  | #else  | 
312  |  | #define __GMP_ATTRIBUTE_PURE  | 
313  |  | #endif  | 
314  |  |  | 
315  |  |  | 
316  |  | /* __GMP_CAST allows us to use static_cast in C++, so our macros are clean  | 
317  |  |    to "g++ -Wold-style-cast".  | 
318  |  |  | 
319  |  |    Casts in "extern inline" code within an extern "C" block don't induce  | 
320  |  |    these warnings, so __GMP_CAST only needs to be used on documented  | 
321  |  |    macros.  */  | 
322  |  |  | 
323  |  | #ifdef __cplusplus  | 
324  |  | #define __GMP_CAST(type, expr)  (static_cast<type> (expr))  | 
325  |  | #else  | 
326  | 0  | #define __GMP_CAST(type, expr)  ((type) (expr))  | 
327  |  | #endif  | 
328  |  |  | 
329  |  |  | 
330  |  | /* An empty "throw ()" means the function doesn't throw any C++ exceptions,  | 
331  |  |    this can save some stack frame info in applications.  | 
332  |  |  | 
333  |  |    Currently it's given only on functions which never divide-by-zero etc,  | 
334  |  |    don't allocate memory, and are expected to never need to allocate memory.  | 
335  |  |    This leaves open the possibility of a C++ throw from a future GMP  | 
336  |  |    exceptions scheme.  | 
337  |  |  | 
338  |  |    mpz_set_ui etc are omitted to leave open the lazy allocation scheme  | 
339  |  |    described in doc/tasks.html.  mpz_get_d etc are omitted to leave open  | 
340  |  |    exceptions for float overflows.  | 
341  |  |  | 
342  |  |    Note that __GMP_NOTHROW must be given on any inlines the same as on their  | 
343  |  |    prototypes (for g++ at least, where they're used together).  Note also  | 
344  |  |    that g++ 3.0 demands that __GMP_NOTHROW is before other attributes like  | 
345  |  |    __GMP_ATTRIBUTE_PURE.  */  | 
346  |  |  | 
347  |  | #if defined (__cplusplus)  | 
348  |  | #if __cplusplus >= 201103L  | 
349  |  | #define __GMP_NOTHROW  noexcept  | 
350  |  | #else  | 
351  |  | #define __GMP_NOTHROW  throw ()  | 
352  |  | #endif  | 
353  |  | #else  | 
354  |  | #define __GMP_NOTHROW  | 
355  |  | #endif  | 
356  |  |  | 
357  |  |  | 
358  |  | /* PORTME: What other compilers have a useful "extern inline"?  "static  | 
359  |  |    inline" would be an acceptable substitute if the compiler (or linker)  | 
360  |  |    discards unused statics.  */  | 
361  |  |  | 
362  |  |  /* gcc has __inline__ in all modes, including strict ansi.  Give a prototype  | 
363  |  |     for an inline too, so as to correctly specify "dllimport" on windows, in  | 
364  |  |     case the function is called rather than inlined.  | 
365  |  |     GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99  | 
366  |  |     inline semantics, unless -fgnu89-inline is used.  */  | 
367  |  | #ifdef __GNUC__  | 
368  |  | #if (defined __GNUC_STDC_INLINE__) || (__GNUC__ == 4 && __GNUC_MINOR__ == 2) \  | 
369  |  |   || (defined __GNUC_GNU_INLINE__ && defined __cplusplus)  | 
370  |  | #define __GMP_EXTERN_INLINE extern __inline__ __attribute__ ((__gnu_inline__))  | 
371  |  | #else  | 
372  |  | #define __GMP_EXTERN_INLINE      extern __inline__  | 
373  |  | #endif  | 
374  |  | #define __GMP_INLINE_PROTOTYPES  1  | 
375  |  | #endif  | 
376  |  |  | 
377  |  | /* DEC C (eg. version 5.9) supports "static __inline foo()", even in -std1  | 
378  |  |    strict ANSI mode.  Inlining is done even when not optimizing (ie. -O0  | 
379  |  |    mode, which is the default), but an unnecessary local copy of foo is  | 
380  |  |    emitted unless -O is used.  "extern __inline" is accepted, but the  | 
381  |  |    "extern" appears to be ignored, ie. it becomes a plain global function  | 
382  |  |    but which is inlined within its file.  Don't know if all old versions of  | 
383  |  |    DEC C supported __inline, but as a start let's do the right thing for  | 
384  |  |    current versions.  */  | 
385  |  | #ifdef __DECC  | 
386  |  | #define __GMP_EXTERN_INLINE  static __inline  | 
387  |  | #endif  | 
388  |  |  | 
389  |  | /* SCO OpenUNIX 8 cc supports "static inline foo()" but not in -Xc strict  | 
390  |  |    ANSI mode (__STDC__ is 1 in that mode).  Inlining only actually takes  | 
391  |  |    place under -O.  Without -O "foo" seems to be emitted whether it's used  | 
392  |  |    or not, which is wasteful.  "extern inline foo()" isn't useful, the  | 
393  |  |    "extern" is apparently ignored, so foo is inlined if possible but also  | 
394  |  |    emitted as a global, which causes multiple definition errors when  | 
395  |  |    building a shared libgmp.  */  | 
396  |  | #ifdef __SCO_VERSION__  | 
397  |  | #if __SCO_VERSION__ > 400000000 && __STDC__ != 1 \  | 
398  |  |   && ! defined (__GMP_EXTERN_INLINE)  | 
399  |  | #define __GMP_EXTERN_INLINE  static inline  | 
400  |  | #endif  | 
401  |  | #endif  | 
402  |  |  | 
403  |  | /* Microsoft's C compiler accepts __inline */  | 
404  |  | #ifdef _MSC_VER  | 
405  |  | #define __GMP_EXTERN_INLINE  __inline  | 
406  |  | #endif  | 
407  |  |  | 
408  |  | /* Recent enough Sun C compilers want "inline" */  | 
409  |  | #if defined (__SUNPRO_C) && __SUNPRO_C >= 0x560 \  | 
410  |  |   && ! defined (__GMP_EXTERN_INLINE)  | 
411  |  | #define __GMP_EXTERN_INLINE  inline  | 
412  |  | #endif  | 
413  |  |  | 
414  |  | /* Somewhat older Sun C compilers want "static inline" */  | 
415  |  | #if defined (__SUNPRO_C) && __SUNPRO_C >= 0x540 \  | 
416  |  |   && ! defined (__GMP_EXTERN_INLINE)  | 
417  |  | #define __GMP_EXTERN_INLINE  static inline  | 
418  |  | #endif  | 
419  |  |  | 
420  |  |  | 
421  |  | /* C++ always has "inline" and since it's a normal feature the linker should  | 
422  |  |    discard duplicate non-inlined copies, or if it doesn't then that's a  | 
423  |  |    problem for everyone, not just GMP.  */  | 
424  |  | #if defined (__cplusplus) && ! defined (__GMP_EXTERN_INLINE)  | 
425  |  | #define __GMP_EXTERN_INLINE  inline  | 
426  |  | #endif  | 
427  |  |  | 
428  |  | /* Don't do any inlining within a configure run, since if the compiler ends  | 
429  |  |    up emitting copies of the code into the object file it can end up  | 
430  |  |    demanding the various support routines (like mpn_popcount) for linking,  | 
431  |  |    making the "alloca" test and perhaps others fail.  And on hppa ia64 a  | 
432  |  |    pre-release gcc 3.2 was seen not respecting the "extern" in "extern  | 
433  |  |    __inline__", triggering this problem too.  */  | 
434  |  | #if defined (__GMP_WITHIN_CONFIGURE) && ! __GMP_WITHIN_CONFIGURE_INLINE  | 
435  |  | #undef __GMP_EXTERN_INLINE  | 
436  |  | #endif  | 
437  |  |  | 
438  |  | /* By default, don't give a prototype when there's going to be an inline  | 
439  |  |    version.  Note in particular that Cray C++ objects to the combination of  | 
440  |  |    prototype and inline.  */  | 
441  |  | #ifdef __GMP_EXTERN_INLINE  | 
442  |  | #ifndef __GMP_INLINE_PROTOTYPES  | 
443  |  | #define __GMP_INLINE_PROTOTYPES  0  | 
444  |  | #endif  | 
445  |  | #else  | 
446  |  | #define __GMP_INLINE_PROTOTYPES  1  | 
447  |  | #endif  | 
448  |  |  | 
449  |  |  | 
450  | 0  | #define __GMP_ABS(x)   ((x) >= 0 ? (x) : -(x))  | 
451  |  | #define __GMP_MAX(h,i) ((h) > (i) ? (h) : (i))  | 
452  |  |  | 
453  |  |  | 
454  |  | /* __builtin_expect is in gcc 3.0, and not in 2.95. */  | 
455  |  | #if __GMP_GNUC_PREREQ (3,0)  | 
456  | 0  | #define __GMP_LIKELY(cond)    __builtin_expect ((cond) != 0, 1)  | 
457  |  | #define __GMP_UNLIKELY(cond)  __builtin_expect ((cond) != 0, 0)  | 
458  |  | #else  | 
459  |  | #define __GMP_LIKELY(cond)    (cond)  | 
460  |  | #define __GMP_UNLIKELY(cond)  (cond)  | 
461  |  | #endif  | 
462  |  |  | 
463  |  | #ifdef _CRAY  | 
464  |  | #define __GMP_CRAY_Pragma(str)  _Pragma (str)  | 
465  |  | #else  | 
466  |  | #define __GMP_CRAY_Pragma(str)  | 
467  |  | #endif  | 
468  |  |  | 
469  |  |  | 
470  |  | /* Allow direct user access to numerator and denominator of an mpq_t object.  */  | 
471  |  | #define mpq_numref(Q) (&((Q)->_mp_num))  | 
472  |  | #define mpq_denref(Q) (&((Q)->_mp_den))  | 
473  |  |  | 
474  |  |  | 
475  |  | #if defined (__cplusplus)  | 
476  |  | extern "C" { | 
477  |  | using std::FILE;  | 
478  |  | #endif  | 
479  |  |  | 
480  | 4  | #define mp_set_memory_functions __gmp_set_memory_functions  | 
481  |  | __GMP_DECLSPEC void mp_set_memory_functions (void *(*) (size_t),  | 
482  |  |               void *(*) (void *, size_t, size_t),  | 
483  |  |               void (*) (void *, size_t)) __GMP_NOTHROW;  | 
484  |  |  | 
485  | 4  | #define mp_get_memory_functions __gmp_get_memory_functions  | 
486  |  | __GMP_DECLSPEC void mp_get_memory_functions (void *(**) (size_t),  | 
487  |  |               void *(**) (void *, size_t, size_t),  | 
488  |  |               void (**) (void *, size_t)) __GMP_NOTHROW;  | 
489  |  |  | 
490  |  | #define mp_bits_per_limb __gmp_bits_per_limb  | 
491  |  | __GMP_DECLSPEC extern const int mp_bits_per_limb;  | 
492  |  |  | 
493  |  | #define gmp_errno __gmp_errno  | 
494  |  | __GMP_DECLSPEC extern int gmp_errno;  | 
495  |  |  | 
496  |  | #define gmp_version __gmp_version  | 
497  |  | __GMP_DECLSPEC extern const char * const gmp_version;  | 
498  |  |  | 
499  |  |  | 
500  |  | /**************** Random number routines.  ****************/  | 
501  |  |  | 
502  |  | /* obsolete */  | 
503  |  | #define gmp_randinit __gmp_randinit  | 
504  |  | __GMP_DECLSPEC void gmp_randinit (gmp_randstate_ptr, gmp_randalg_t, ...);  | 
505  |  |  | 
506  |  | #define gmp_randinit_default __gmp_randinit_default  | 
507  |  | __GMP_DECLSPEC void gmp_randinit_default (gmp_randstate_ptr);  | 
508  |  |  | 
509  |  | #define gmp_randinit_lc_2exp __gmp_randinit_lc_2exp  | 
510  |  | __GMP_DECLSPEC void gmp_randinit_lc_2exp (gmp_randstate_ptr, mpz_srcptr, unsigned long int, mp_bitcnt_t);  | 
511  |  |  | 
512  |  | #define gmp_randinit_lc_2exp_size __gmp_randinit_lc_2exp_size  | 
513  |  | __GMP_DECLSPEC int gmp_randinit_lc_2exp_size (gmp_randstate_ptr, mp_bitcnt_t);  | 
514  |  |  | 
515  |  | #define gmp_randinit_mt __gmp_randinit_mt  | 
516  |  | __GMP_DECLSPEC void gmp_randinit_mt (gmp_randstate_ptr);  | 
517  |  |  | 
518  |  | #define gmp_randinit_set __gmp_randinit_set  | 
519  |  | __GMP_DECLSPEC void gmp_randinit_set (gmp_randstate_ptr, gmp_randstate_srcptr);  | 
520  |  |  | 
521  |  | #define gmp_randseed __gmp_randseed  | 
522  |  | __GMP_DECLSPEC void gmp_randseed (gmp_randstate_ptr, mpz_srcptr);  | 
523  |  |  | 
524  |  | #define gmp_randseed_ui __gmp_randseed_ui  | 
525  |  | __GMP_DECLSPEC void gmp_randseed_ui (gmp_randstate_ptr, unsigned long int);  | 
526  |  |  | 
527  |  | #define gmp_randclear __gmp_randclear  | 
528  |  | __GMP_DECLSPEC void gmp_randclear (gmp_randstate_ptr);  | 
529  |  |  | 
530  |  | #define gmp_urandomb_ui __gmp_urandomb_ui  | 
531  |  | __GMP_DECLSPEC unsigned long gmp_urandomb_ui (gmp_randstate_ptr, unsigned long);  | 
532  |  |  | 
533  |  | #define gmp_urandomm_ui __gmp_urandomm_ui  | 
534  |  | __GMP_DECLSPEC unsigned long gmp_urandomm_ui (gmp_randstate_ptr, unsigned long);  | 
535  |  |  | 
536  |  |  | 
537  |  | /**************** Formatted output routines.  ****************/  | 
538  |  |  | 
539  |  | #define gmp_asprintf __gmp_asprintf  | 
540  |  | __GMP_DECLSPEC int gmp_asprintf (char **, const char *, ...);  | 
541  |  |  | 
542  |  | #define gmp_fprintf __gmp_fprintf  | 
543  |  | #ifdef _GMP_H_HAVE_FILE  | 
544  |  | __GMP_DECLSPEC int gmp_fprintf (FILE *, const char *, ...);  | 
545  |  | #endif  | 
546  |  |  | 
547  |  | #define gmp_obstack_printf __gmp_obstack_printf  | 
548  |  | #if defined (_GMP_H_HAVE_OBSTACK)  | 
549  |  | __GMP_DECLSPEC int gmp_obstack_printf (struct obstack *, const char *, ...);  | 
550  |  | #endif  | 
551  |  |  | 
552  |  | #define gmp_obstack_vprintf __gmp_obstack_vprintf  | 
553  |  | #if defined (_GMP_H_HAVE_OBSTACK) && defined (_GMP_H_HAVE_VA_LIST)  | 
554  |  | __GMP_DECLSPEC int gmp_obstack_vprintf (struct obstack *, const char *, va_list);  | 
555  |  | #endif  | 
556  |  |  | 
557  |  | #define gmp_printf __gmp_printf  | 
558  |  | __GMP_DECLSPEC int gmp_printf (const char *, ...);  | 
559  |  |  | 
560  |  | #define gmp_snprintf __gmp_snprintf  | 
561  |  | __GMP_DECLSPEC int gmp_snprintf (char *, size_t, const char *, ...);  | 
562  |  |  | 
563  |  | #define gmp_sprintf __gmp_sprintf  | 
564  |  | __GMP_DECLSPEC int gmp_sprintf (char *, const char *, ...);  | 
565  |  |  | 
566  |  | #define gmp_vasprintf __gmp_vasprintf  | 
567  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
568  |  | __GMP_DECLSPEC int gmp_vasprintf (char **, const char *, va_list);  | 
569  |  | #endif  | 
570  |  |  | 
571  |  | #define gmp_vfprintf __gmp_vfprintf  | 
572  |  | #if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)  | 
573  |  | __GMP_DECLSPEC int gmp_vfprintf (FILE *, const char *, va_list);  | 
574  |  | #endif  | 
575  |  |  | 
576  |  | #define gmp_vprintf __gmp_vprintf  | 
577  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
578  |  | __GMP_DECLSPEC int gmp_vprintf (const char *, va_list);  | 
579  |  | #endif  | 
580  |  |  | 
581  |  | #define gmp_vsnprintf __gmp_vsnprintf  | 
582  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
583  |  | __GMP_DECLSPEC int gmp_vsnprintf (char *, size_t, const char *, va_list);  | 
584  |  | #endif  | 
585  |  |  | 
586  |  | #define gmp_vsprintf __gmp_vsprintf  | 
587  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
588  |  | __GMP_DECLSPEC int gmp_vsprintf (char *, const char *, va_list);  | 
589  |  | #endif  | 
590  |  |  | 
591  |  |  | 
592  |  | /**************** Formatted input routines.  ****************/  | 
593  |  |  | 
594  |  | #define gmp_fscanf __gmp_fscanf  | 
595  |  | #ifdef _GMP_H_HAVE_FILE  | 
596  |  | __GMP_DECLSPEC int gmp_fscanf (FILE *, const char *, ...);  | 
597  |  | #endif  | 
598  |  |  | 
599  |  | #define gmp_scanf __gmp_scanf  | 
600  |  | __GMP_DECLSPEC int gmp_scanf (const char *, ...);  | 
601  |  |  | 
602  |  | #define gmp_sscanf __gmp_sscanf  | 
603  |  | __GMP_DECLSPEC int gmp_sscanf (const char *, const char *, ...);  | 
604  |  |  | 
605  |  | #define gmp_vfscanf __gmp_vfscanf  | 
606  |  | #if defined (_GMP_H_HAVE_FILE) && defined (_GMP_H_HAVE_VA_LIST)  | 
607  |  | __GMP_DECLSPEC int gmp_vfscanf (FILE *, const char *, va_list);  | 
608  |  | #endif  | 
609  |  |  | 
610  |  | #define gmp_vscanf __gmp_vscanf  | 
611  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
612  |  | __GMP_DECLSPEC int gmp_vscanf (const char *, va_list);  | 
613  |  | #endif  | 
614  |  |  | 
615  |  | #define gmp_vsscanf __gmp_vsscanf  | 
616  |  | #if defined (_GMP_H_HAVE_VA_LIST)  | 
617  |  | __GMP_DECLSPEC int gmp_vsscanf (const char *, const char *, va_list);  | 
618  |  | #endif  | 
619  |  |  | 
620  |  |  | 
621  |  | /**************** Integer (i.e. Z) routines.  ****************/  | 
622  |  |  | 
623  |  | #define _mpz_realloc __gmpz_realloc  | 
624  |  | #define mpz_realloc __gmpz_realloc  | 
625  |  | __GMP_DECLSPEC void *_mpz_realloc (mpz_ptr, mp_size_t);  | 
626  |  |  | 
627  |  | #define mpz_abs __gmpz_abs  | 
628  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_abs)  | 
629  |  | __GMP_DECLSPEC void mpz_abs (mpz_ptr, mpz_srcptr);  | 
630  |  | #endif  | 
631  |  |  | 
632  | 0  | #define mpz_add __gmpz_add  | 
633  |  | __GMP_DECLSPEC void mpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
634  |  |  | 
635  | 0  | #define mpz_add_ui __gmpz_add_ui  | 
636  |  | __GMP_DECLSPEC void mpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
637  |  |  | 
638  |  | #define mpz_addmul __gmpz_addmul  | 
639  |  | __GMP_DECLSPEC void mpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
640  |  |  | 
641  |  | #define mpz_addmul_ui __gmpz_addmul_ui  | 
642  |  | __GMP_DECLSPEC void mpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
643  |  |  | 
644  |  | #define mpz_and __gmpz_and  | 
645  |  | __GMP_DECLSPEC void mpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
646  |  |  | 
647  |  | #define mpz_array_init __gmpz_array_init  | 
648  |  | __GMP_DECLSPEC void mpz_array_init (mpz_ptr, mp_size_t, mp_size_t);  | 
649  |  |  | 
650  |  | #define mpz_bin_ui __gmpz_bin_ui  | 
651  |  | __GMP_DECLSPEC void mpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
652  |  |  | 
653  |  | #define mpz_bin_uiui __gmpz_bin_uiui  | 
654  |  | __GMP_DECLSPEC void mpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);  | 
655  |  |  | 
656  | 0  | #define mpz_cdiv_q __gmpz_cdiv_q  | 
657  |  | __GMP_DECLSPEC void mpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
658  |  |  | 
659  |  | #define mpz_cdiv_q_2exp __gmpz_cdiv_q_2exp  | 
660  |  | __GMP_DECLSPEC void mpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
661  |  |  | 
662  |  | #define mpz_cdiv_q_ui __gmpz_cdiv_q_ui  | 
663  |  | __GMP_DECLSPEC unsigned long int mpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
664  |  |  | 
665  |  | #define mpz_cdiv_qr __gmpz_cdiv_qr  | 
666  |  | __GMP_DECLSPEC void mpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
667  |  |  | 
668  |  | #define mpz_cdiv_qr_ui __gmpz_cdiv_qr_ui  | 
669  |  | __GMP_DECLSPEC unsigned long int mpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);  | 
670  |  |  | 
671  |  | #define mpz_cdiv_r __gmpz_cdiv_r  | 
672  |  | __GMP_DECLSPEC void mpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
673  |  |  | 
674  |  | #define mpz_cdiv_r_2exp __gmpz_cdiv_r_2exp  | 
675  |  | __GMP_DECLSPEC void mpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
676  |  |  | 
677  |  | #define mpz_cdiv_r_ui __gmpz_cdiv_r_ui  | 
678  |  | __GMP_DECLSPEC unsigned long int mpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
679  |  |  | 
680  |  | #define mpz_cdiv_ui __gmpz_cdiv_ui  | 
681  |  | __GMP_DECLSPEC unsigned long int mpz_cdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;  | 
682  |  |  | 
683  | 0  | #define mpz_clear __gmpz_clear  | 
684  |  | __GMP_DECLSPEC void mpz_clear (mpz_ptr);  | 
685  |  |  | 
686  |  | #define mpz_clears __gmpz_clears  | 
687  |  | __GMP_DECLSPEC void mpz_clears (mpz_ptr, ...);  | 
688  |  |  | 
689  |  | #define mpz_clrbit __gmpz_clrbit  | 
690  |  | __GMP_DECLSPEC void mpz_clrbit (mpz_ptr, mp_bitcnt_t);  | 
691  |  |  | 
692  | 0  | #define mpz_cmp __gmpz_cmp  | 
693  |  | __GMP_DECLSPEC int mpz_cmp (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
694  |  |  | 
695  |  | #define mpz_cmp_d __gmpz_cmp_d  | 
696  |  | __GMP_DECLSPEC int mpz_cmp_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;  | 
697  |  |  | 
698  |  | #define _mpz_cmp_si __gmpz_cmp_si  | 
699  |  | __GMP_DECLSPEC int _mpz_cmp_si (mpz_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
700  |  |  | 
701  | 0  | #define _mpz_cmp_ui __gmpz_cmp_ui  | 
702  |  | __GMP_DECLSPEC int _mpz_cmp_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
703  |  |  | 
704  |  | #define mpz_cmpabs __gmpz_cmpabs  | 
705  |  | __GMP_DECLSPEC int mpz_cmpabs (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
706  |  |  | 
707  |  | #define mpz_cmpabs_d __gmpz_cmpabs_d  | 
708  |  | __GMP_DECLSPEC int mpz_cmpabs_d (mpz_srcptr, double) __GMP_ATTRIBUTE_PURE;  | 
709  |  |  | 
710  |  | #define mpz_cmpabs_ui __gmpz_cmpabs_ui  | 
711  |  | __GMP_DECLSPEC int mpz_cmpabs_ui (mpz_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
712  |  |  | 
713  | 0  | #define mpz_com __gmpz_com  | 
714  |  | __GMP_DECLSPEC void mpz_com (mpz_ptr, mpz_srcptr);  | 
715  |  |  | 
716  |  | #define mpz_combit __gmpz_combit  | 
717  |  | __GMP_DECLSPEC void mpz_combit (mpz_ptr, mp_bitcnt_t);  | 
718  |  |  | 
719  | 0  | #define mpz_congruent_p __gmpz_congruent_p  | 
720  |  | __GMP_DECLSPEC int mpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
721  |  |  | 
722  |  | #define mpz_congruent_2exp_p __gmpz_congruent_2exp_p  | 
723  |  | __GMP_DECLSPEC int mpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
724  |  |  | 
725  |  | #define mpz_congruent_ui_p __gmpz_congruent_ui_p  | 
726  |  | __GMP_DECLSPEC int mpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __GMP_ATTRIBUTE_PURE;  | 
727  |  |  | 
728  |  | #define mpz_divexact __gmpz_divexact  | 
729  |  | __GMP_DECLSPEC void mpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
730  |  |  | 
731  |  | #define mpz_divexact_ui __gmpz_divexact_ui  | 
732  |  | __GMP_DECLSPEC void mpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);  | 
733  |  |  | 
734  |  | #define mpz_divisible_p __gmpz_divisible_p  | 
735  |  | __GMP_DECLSPEC int mpz_divisible_p (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
736  |  |  | 
737  |  | #define mpz_divisible_ui_p __gmpz_divisible_ui_p  | 
738  |  | __GMP_DECLSPEC int mpz_divisible_ui_p (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;  | 
739  |  |  | 
740  |  | #define mpz_divisible_2exp_p __gmpz_divisible_2exp_p  | 
741  |  | __GMP_DECLSPEC int mpz_divisible_2exp_p (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
742  |  |  | 
743  |  | #define mpz_dump __gmpz_dump  | 
744  |  | __GMP_DECLSPEC void mpz_dump (mpz_srcptr);  | 
745  |  |  | 
746  | 0  | #define mpz_export __gmpz_export  | 
747  |  | __GMP_DECLSPEC void *mpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);  | 
748  |  |  | 
749  |  | #define mpz_fac_ui __gmpz_fac_ui  | 
750  |  | __GMP_DECLSPEC void mpz_fac_ui (mpz_ptr, unsigned long int);  | 
751  |  |  | 
752  |  | #define mpz_2fac_ui __gmpz_2fac_ui  | 
753  |  | __GMP_DECLSPEC void mpz_2fac_ui (mpz_ptr, unsigned long int);  | 
754  |  |  | 
755  |  | #define mpz_mfac_uiui __gmpz_mfac_uiui  | 
756  |  | __GMP_DECLSPEC void mpz_mfac_uiui (mpz_ptr, unsigned long int, unsigned long int);  | 
757  |  |  | 
758  |  | #define mpz_primorial_ui __gmpz_primorial_ui  | 
759  |  | __GMP_DECLSPEC void mpz_primorial_ui (mpz_ptr, unsigned long int);  | 
760  |  |  | 
761  | 0  | #define mpz_fdiv_q __gmpz_fdiv_q  | 
762  |  | __GMP_DECLSPEC void mpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
763  |  |  | 
764  | 0  | #define mpz_fdiv_q_2exp __gmpz_fdiv_q_2exp  | 
765  |  | __GMP_DECLSPEC void mpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
766  |  |  | 
767  |  | #define mpz_fdiv_q_ui __gmpz_fdiv_q_ui  | 
768  |  | __GMP_DECLSPEC unsigned long int mpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
769  |  |  | 
770  |  | #define mpz_fdiv_qr __gmpz_fdiv_qr  | 
771  |  | __GMP_DECLSPEC void mpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
772  |  |  | 
773  |  | #define mpz_fdiv_qr_ui __gmpz_fdiv_qr_ui  | 
774  |  | __GMP_DECLSPEC unsigned long int mpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);  | 
775  |  |  | 
776  | 0  | #define mpz_fdiv_r __gmpz_fdiv_r  | 
777  |  | __GMP_DECLSPEC void mpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
778  |  |  | 
779  | 0  | #define mpz_fdiv_r_2exp __gmpz_fdiv_r_2exp  | 
780  |  | __GMP_DECLSPEC void mpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
781  |  |  | 
782  |  | #define mpz_fdiv_r_ui __gmpz_fdiv_r_ui  | 
783  |  | __GMP_DECLSPEC unsigned long int mpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
784  |  |  | 
785  |  | #define mpz_fdiv_ui __gmpz_fdiv_ui  | 
786  |  | __GMP_DECLSPEC unsigned long int mpz_fdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;  | 
787  |  |  | 
788  |  | #define mpz_fib_ui __gmpz_fib_ui  | 
789  |  | __GMP_DECLSPEC void mpz_fib_ui (mpz_ptr, unsigned long int);  | 
790  |  |  | 
791  |  | #define mpz_fib2_ui __gmpz_fib2_ui  | 
792  |  | __GMP_DECLSPEC void mpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);  | 
793  |  |  | 
794  |  | #define mpz_fits_sint_p __gmpz_fits_sint_p  | 
795  |  | __GMP_DECLSPEC int mpz_fits_sint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
796  |  |  | 
797  |  | #define mpz_fits_slong_p __gmpz_fits_slong_p  | 
798  |  | __GMP_DECLSPEC int mpz_fits_slong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
799  |  |  | 
800  |  | #define mpz_fits_sshort_p __gmpz_fits_sshort_p  | 
801  |  | __GMP_DECLSPEC int mpz_fits_sshort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
802  |  |  | 
803  |  | #define mpz_fits_uint_p __gmpz_fits_uint_p  | 
804  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_uint_p)  | 
805  |  | __GMP_DECLSPEC int mpz_fits_uint_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
806  |  | #endif  | 
807  |  |  | 
808  |  | #define mpz_fits_ulong_p __gmpz_fits_ulong_p  | 
809  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ulong_p)  | 
810  |  | __GMP_DECLSPEC int mpz_fits_ulong_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
811  |  | #endif  | 
812  |  |  | 
813  |  | #define mpz_fits_ushort_p __gmpz_fits_ushort_p  | 
814  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_fits_ushort_p)  | 
815  |  | __GMP_DECLSPEC int mpz_fits_ushort_p (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
816  |  | #endif  | 
817  |  |  | 
818  | 0  | #define mpz_gcd __gmpz_gcd  | 
819  |  | __GMP_DECLSPEC void mpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
820  |  |  | 
821  |  | #define mpz_gcd_ui __gmpz_gcd_ui  | 
822  |  | __GMP_DECLSPEC unsigned long int mpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
823  |  |  | 
824  |  | #define mpz_gcdext __gmpz_gcdext  | 
825  |  | __GMP_DECLSPEC void mpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
826  |  |  | 
827  |  | #define mpz_get_d __gmpz_get_d  | 
828  |  | __GMP_DECLSPEC double mpz_get_d (mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
829  |  |  | 
830  |  | #define mpz_get_d_2exp __gmpz_get_d_2exp  | 
831  |  | __GMP_DECLSPEC double mpz_get_d_2exp (signed long int *, mpz_srcptr);  | 
832  |  |  | 
833  |  | #define mpz_get_si __gmpz_get_si  | 
834  |  | __GMP_DECLSPEC /* signed */ long int mpz_get_si (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
835  |  |  | 
836  |  | #define mpz_get_str __gmpz_get_str  | 
837  |  | __GMP_DECLSPEC char *mpz_get_str (char *, int, mpz_srcptr);  | 
838  |  |  | 
839  |  | #define mpz_get_ui __gmpz_get_ui  | 
840  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_get_ui)  | 
841  |  | __GMP_DECLSPEC unsigned long int mpz_get_ui (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
842  |  | #endif  | 
843  |  |  | 
844  | 0  | #define mpz_getlimbn __gmpz_getlimbn  | 
845  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_getlimbn)  | 
846  |  | __GMP_DECLSPEC mp_limb_t mpz_getlimbn (mpz_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
847  |  | #endif  | 
848  |  |  | 
849  |  | #define mpz_hamdist __gmpz_hamdist  | 
850  |  | __GMP_DECLSPEC mp_bitcnt_t mpz_hamdist (mpz_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
851  |  |  | 
852  | 0  | #define mpz_import __gmpz_import  | 
853  |  | __GMP_DECLSPEC void mpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);  | 
854  |  |  | 
855  | 0  | #define mpz_init __gmpz_init  | 
856  |  | __GMP_DECLSPEC void mpz_init (mpz_ptr) __GMP_NOTHROW;  | 
857  |  |  | 
858  |  | #define mpz_init2 __gmpz_init2  | 
859  |  | __GMP_DECLSPEC void mpz_init2 (mpz_ptr, mp_bitcnt_t);  | 
860  |  |  | 
861  |  | #define mpz_inits __gmpz_inits  | 
862  |  | __GMP_DECLSPEC void mpz_inits (mpz_ptr, ...) __GMP_NOTHROW;  | 
863  |  |  | 
864  | 0  | #define mpz_init_set __gmpz_init_set  | 
865  |  | __GMP_DECLSPEC void mpz_init_set (mpz_ptr, mpz_srcptr);  | 
866  |  |  | 
867  |  | #define mpz_init_set_d __gmpz_init_set_d  | 
868  |  | __GMP_DECLSPEC void mpz_init_set_d (mpz_ptr, double);  | 
869  |  |  | 
870  |  | #define mpz_init_set_si __gmpz_init_set_si  | 
871  |  | __GMP_DECLSPEC void mpz_init_set_si (mpz_ptr, signed long int);  | 
872  |  |  | 
873  | 0  | #define mpz_init_set_str __gmpz_init_set_str  | 
874  |  | __GMP_DECLSPEC int mpz_init_set_str (mpz_ptr, const char *, int);  | 
875  |  |  | 
876  | 0  | #define mpz_init_set_ui __gmpz_init_set_ui  | 
877  |  | __GMP_DECLSPEC void mpz_init_set_ui (mpz_ptr, unsigned long int);  | 
878  |  |  | 
879  |  | #define mpz_inp_raw __gmpz_inp_raw  | 
880  |  | #ifdef _GMP_H_HAVE_FILE  | 
881  |  | __GMP_DECLSPEC size_t mpz_inp_raw (mpz_ptr, FILE *);  | 
882  |  | #endif  | 
883  |  |  | 
884  |  | #define mpz_inp_str __gmpz_inp_str  | 
885  |  | #ifdef _GMP_H_HAVE_FILE  | 
886  |  | __GMP_DECLSPEC size_t mpz_inp_str (mpz_ptr, FILE *, int);  | 
887  |  | #endif  | 
888  |  |  | 
889  | 0  | #define mpz_invert __gmpz_invert  | 
890  |  | __GMP_DECLSPEC int mpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
891  |  |  | 
892  |  | #define mpz_ior __gmpz_ior  | 
893  |  | __GMP_DECLSPEC void mpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
894  |  |  | 
895  |  | #define mpz_jacobi __gmpz_jacobi  | 
896  |  | __GMP_DECLSPEC int mpz_jacobi (mpz_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
897  |  |  | 
898  |  | #define mpz_kronecker mpz_jacobi  /* alias */  | 
899  |  |  | 
900  |  | #define mpz_kronecker_si __gmpz_kronecker_si  | 
901  |  | __GMP_DECLSPEC int mpz_kronecker_si (mpz_srcptr, long) __GMP_ATTRIBUTE_PURE;  | 
902  |  |  | 
903  |  | #define mpz_kronecker_ui __gmpz_kronecker_ui  | 
904  |  | __GMP_DECLSPEC int mpz_kronecker_ui (mpz_srcptr, unsigned long) __GMP_ATTRIBUTE_PURE;  | 
905  |  |  | 
906  |  | #define mpz_si_kronecker __gmpz_si_kronecker  | 
907  |  | __GMP_DECLSPEC int mpz_si_kronecker (long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
908  |  |  | 
909  |  | #define mpz_ui_kronecker __gmpz_ui_kronecker  | 
910  |  | __GMP_DECLSPEC int mpz_ui_kronecker (unsigned long, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
911  |  |  | 
912  | 0  | #define mpz_lcm __gmpz_lcm  | 
913  |  | __GMP_DECLSPEC void mpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
914  |  |  | 
915  |  | #define mpz_lcm_ui __gmpz_lcm_ui  | 
916  |  | __GMP_DECLSPEC void mpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);  | 
917  |  |  | 
918  |  | #define mpz_legendre mpz_jacobi  /* alias */  | 
919  |  |  | 
920  |  | #define mpz_lucnum_ui __gmpz_lucnum_ui  | 
921  |  | __GMP_DECLSPEC void mpz_lucnum_ui (mpz_ptr, unsigned long int);  | 
922  |  |  | 
923  |  | #define mpz_lucnum2_ui __gmpz_lucnum2_ui  | 
924  |  | __GMP_DECLSPEC void mpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);  | 
925  |  |  | 
926  |  | #define mpz_millerrabin __gmpz_millerrabin  | 
927  |  | __GMP_DECLSPEC int mpz_millerrabin (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;  | 
928  |  |  | 
929  | 0  | #define mpz_mod __gmpz_mod  | 
930  |  | __GMP_DECLSPEC void mpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
931  |  |  | 
932  |  | #define mpz_mod_ui mpz_fdiv_r_ui /* same as fdiv_r because divisor unsigned */  | 
933  |  |  | 
934  | 0  | #define mpz_mul __gmpz_mul  | 
935  |  | __GMP_DECLSPEC void mpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
936  |  |  | 
937  | 0  | #define mpz_mul_2exp __gmpz_mul_2exp  | 
938  |  | __GMP_DECLSPEC void mpz_mul_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
939  |  |  | 
940  |  | #define mpz_mul_si __gmpz_mul_si  | 
941  |  | __GMP_DECLSPEC void mpz_mul_si (mpz_ptr, mpz_srcptr, long int);  | 
942  |  |  | 
943  | 0  | #define mpz_mul_ui __gmpz_mul_ui  | 
944  |  | __GMP_DECLSPEC void mpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
945  |  |  | 
946  |  | #define mpz_neg __gmpz_neg  | 
947  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_neg)  | 
948  |  | __GMP_DECLSPEC void mpz_neg (mpz_ptr, mpz_srcptr);  | 
949  |  | #endif  | 
950  |  |  | 
951  |  | #define mpz_nextprime __gmpz_nextprime  | 
952  |  | __GMP_DECLSPEC void mpz_nextprime (mpz_ptr, mpz_srcptr);  | 
953  |  |  | 
954  |  | #define mpz_prevprime __gmpz_prevprime  | 
955  |  | __GMP_DECLSPEC int mpz_prevprime (mpz_ptr, mpz_srcptr);  | 
956  |  |  | 
957  |  | #define mpz_out_raw __gmpz_out_raw  | 
958  |  | #ifdef _GMP_H_HAVE_FILE  | 
959  |  | __GMP_DECLSPEC size_t mpz_out_raw (FILE *, mpz_srcptr);  | 
960  |  | #endif  | 
961  |  |  | 
962  |  | #define mpz_out_str __gmpz_out_str  | 
963  |  | #ifdef _GMP_H_HAVE_FILE  | 
964  |  | __GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);  | 
965  |  | #endif  | 
966  |  |  | 
967  |  | #define mpz_perfect_power_p __gmpz_perfect_power_p  | 
968  |  | __GMP_DECLSPEC int mpz_perfect_power_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
969  |  |  | 
970  | 0  | #define mpz_perfect_square_p __gmpz_perfect_square_p  | 
971  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_perfect_square_p)  | 
972  |  | __GMP_DECLSPEC int mpz_perfect_square_p (mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
973  |  | #endif  | 
974  |  |  | 
975  |  | #define mpz_popcount __gmpz_popcount  | 
976  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_popcount)  | 
977  |  | __GMP_DECLSPEC mp_bitcnt_t mpz_popcount (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
978  |  | #endif  | 
979  |  |  | 
980  |  | #define mpz_pow_ui __gmpz_pow_ui  | 
981  |  | __GMP_DECLSPEC void mpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
982  |  |  | 
983  | 0  | #define mpz_powm __gmpz_powm  | 
984  |  | __GMP_DECLSPEC void mpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);  | 
985  |  |  | 
986  | 0  | #define mpz_powm_sec __gmpz_powm_sec  | 
987  |  | __GMP_DECLSPEC void mpz_powm_sec (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);  | 
988  |  |  | 
989  | 0  | #define mpz_powm_ui __gmpz_powm_ui  | 
990  |  | __GMP_DECLSPEC void mpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);  | 
991  |  |  | 
992  | 0  | #define mpz_probab_prime_p __gmpz_probab_prime_p  | 
993  |  | __GMP_DECLSPEC int mpz_probab_prime_p (mpz_srcptr, int) __GMP_ATTRIBUTE_PURE;  | 
994  |  |  | 
995  |  | #define mpz_random __gmpz_random  | 
996  |  | __GMP_DECLSPEC void mpz_random (mpz_ptr, mp_size_t);  | 
997  |  |  | 
998  |  | #define mpz_random2 __gmpz_random2  | 
999  |  | __GMP_DECLSPEC void mpz_random2 (mpz_ptr, mp_size_t);  | 
1000  |  |  | 
1001  |  | #define mpz_realloc2 __gmpz_realloc2  | 
1002  |  | __GMP_DECLSPEC void mpz_realloc2 (mpz_ptr, mp_bitcnt_t);  | 
1003  |  |  | 
1004  |  | #define mpz_remove __gmpz_remove  | 
1005  |  | __GMP_DECLSPEC mp_bitcnt_t mpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1006  |  |  | 
1007  |  | #define mpz_root __gmpz_root  | 
1008  |  | __GMP_DECLSPEC int mpz_root (mpz_ptr, mpz_srcptr, unsigned long int);  | 
1009  |  |  | 
1010  |  | #define mpz_rootrem __gmpz_rootrem  | 
1011  |  | __GMP_DECLSPEC void mpz_rootrem (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);  | 
1012  |  |  | 
1013  |  | #define mpz_rrandomb __gmpz_rrandomb  | 
1014  |  | __GMP_DECLSPEC void mpz_rrandomb (mpz_ptr, gmp_randstate_ptr, mp_bitcnt_t);  | 
1015  |  |  | 
1016  |  | #define mpz_scan0 __gmpz_scan0  | 
1017  |  | __GMP_DECLSPEC mp_bitcnt_t mpz_scan0 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1018  |  |  | 
1019  | 0  | #define mpz_scan1 __gmpz_scan1  | 
1020  |  | __GMP_DECLSPEC mp_bitcnt_t mpz_scan1 (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1021  |  |  | 
1022  | 0  | #define mpz_set __gmpz_set  | 
1023  |  | __GMP_DECLSPEC void mpz_set (mpz_ptr, mpz_srcptr);  | 
1024  |  |  | 
1025  |  | #define mpz_set_d __gmpz_set_d  | 
1026  |  | __GMP_DECLSPEC void mpz_set_d (mpz_ptr, double);  | 
1027  |  |  | 
1028  |  | #define mpz_set_f __gmpz_set_f  | 
1029  |  | __GMP_DECLSPEC void mpz_set_f (mpz_ptr, mpf_srcptr);  | 
1030  |  |  | 
1031  |  | #define mpz_set_q __gmpz_set_q  | 
1032  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_set_q)  | 
1033  |  | __GMP_DECLSPEC void mpz_set_q (mpz_ptr, mpq_srcptr);  | 
1034  |  | #endif  | 
1035  |  |  | 
1036  |  | #define mpz_set_si __gmpz_set_si  | 
1037  |  | __GMP_DECLSPEC void mpz_set_si (mpz_ptr, signed long int);  | 
1038  |  |  | 
1039  | 0  | #define mpz_set_str __gmpz_set_str  | 
1040  |  | __GMP_DECLSPEC int mpz_set_str (mpz_ptr, const char *, int);  | 
1041  |  |  | 
1042  | 0  | #define mpz_set_ui __gmpz_set_ui  | 
1043  |  | __GMP_DECLSPEC void mpz_set_ui (mpz_ptr, unsigned long int);  | 
1044  |  |  | 
1045  | 0  | #define mpz_setbit __gmpz_setbit  | 
1046  |  | __GMP_DECLSPEC void mpz_setbit (mpz_ptr, mp_bitcnt_t);  | 
1047  |  |  | 
1048  | 0  | #define mpz_size __gmpz_size  | 
1049  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpz_size)  | 
1050  |  | __GMP_DECLSPEC size_t mpz_size (mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1051  |  | #endif  | 
1052  |  |  | 
1053  | 0  | #define mpz_sizeinbase __gmpz_sizeinbase  | 
1054  |  | __GMP_DECLSPEC size_t mpz_sizeinbase (mpz_srcptr, int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1055  |  |  | 
1056  | 0  | #define mpz_sqrt __gmpz_sqrt  | 
1057  |  | __GMP_DECLSPEC void mpz_sqrt (mpz_ptr, mpz_srcptr);  | 
1058  |  |  | 
1059  |  | #define mpz_sqrtrem __gmpz_sqrtrem  | 
1060  |  | __GMP_DECLSPEC void mpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);  | 
1061  |  |  | 
1062  | 0  | #define mpz_sub __gmpz_sub  | 
1063  |  | __GMP_DECLSPEC void mpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1064  |  |  | 
1065  | 0  | #define mpz_sub_ui __gmpz_sub_ui  | 
1066  |  | __GMP_DECLSPEC void mpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
1067  |  |  | 
1068  |  | #define mpz_ui_sub __gmpz_ui_sub  | 
1069  |  | __GMP_DECLSPEC void mpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);  | 
1070  |  |  | 
1071  | 0  | #define mpz_submul __gmpz_submul  | 
1072  |  | __GMP_DECLSPEC void mpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1073  |  |  | 
1074  | 0  | #define mpz_submul_ui __gmpz_submul_ui  | 
1075  |  | __GMP_DECLSPEC void mpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
1076  |  |  | 
1077  |  | #define mpz_swap __gmpz_swap  | 
1078  |  | __GMP_DECLSPEC void mpz_swap (mpz_ptr, mpz_ptr) __GMP_NOTHROW;  | 
1079  |  |  | 
1080  |  | #define mpz_tdiv_ui __gmpz_tdiv_ui  | 
1081  |  | __GMP_DECLSPEC unsigned long int mpz_tdiv_ui (mpz_srcptr, unsigned long int) __GMP_ATTRIBUTE_PURE;  | 
1082  |  |  | 
1083  |  | #define mpz_tdiv_q __gmpz_tdiv_q  | 
1084  |  | __GMP_DECLSPEC void mpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1085  |  |  | 
1086  | 0  | #define mpz_tdiv_q_2exp __gmpz_tdiv_q_2exp  | 
1087  |  | __GMP_DECLSPEC void mpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
1088  |  |  | 
1089  |  | #define mpz_tdiv_q_ui __gmpz_tdiv_q_ui  | 
1090  |  | __GMP_DECLSPEC unsigned long int mpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
1091  |  |  | 
1092  | 0  | #define mpz_tdiv_qr __gmpz_tdiv_qr  | 
1093  |  | __GMP_DECLSPEC void mpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1094  |  |  | 
1095  |  | #define mpz_tdiv_qr_ui __gmpz_tdiv_qr_ui  | 
1096  |  | __GMP_DECLSPEC unsigned long int mpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);  | 
1097  |  |  | 
1098  |  | #define mpz_tdiv_r __gmpz_tdiv_r  | 
1099  |  | __GMP_DECLSPEC void mpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1100  |  |  | 
1101  | 0  | #define mpz_tdiv_r_2exp __gmpz_tdiv_r_2exp  | 
1102  |  | __GMP_DECLSPEC void mpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, mp_bitcnt_t);  | 
1103  |  |  | 
1104  |  | #define mpz_tdiv_r_ui __gmpz_tdiv_r_ui  | 
1105  |  | __GMP_DECLSPEC unsigned long int mpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);  | 
1106  |  |  | 
1107  | 0  | #define mpz_tstbit __gmpz_tstbit  | 
1108  |  | __GMP_DECLSPEC int mpz_tstbit (mpz_srcptr, mp_bitcnt_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1109  |  |  | 
1110  |  | #define mpz_ui_pow_ui __gmpz_ui_pow_ui  | 
1111  |  | __GMP_DECLSPEC void mpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);  | 
1112  |  |  | 
1113  |  | #define mpz_urandomb __gmpz_urandomb  | 
1114  |  | __GMP_DECLSPEC void mpz_urandomb (mpz_ptr, gmp_randstate_ptr, mp_bitcnt_t);  | 
1115  |  |  | 
1116  |  | #define mpz_urandomm __gmpz_urandomm  | 
1117  |  | __GMP_DECLSPEC void mpz_urandomm (mpz_ptr, gmp_randstate_ptr, mpz_srcptr);  | 
1118  |  |  | 
1119  |  | #define mpz_xor __gmpz_xor  | 
1120  |  | #define mpz_eor __gmpz_xor  | 
1121  |  | __GMP_DECLSPEC void mpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);  | 
1122  |  |  | 
1123  | 0  | #define mpz_limbs_read __gmpz_limbs_read  | 
1124  |  | __GMP_DECLSPEC mp_srcptr mpz_limbs_read (mpz_srcptr);  | 
1125  |  |  | 
1126  | 0  | #define mpz_limbs_write __gmpz_limbs_write  | 
1127  |  | __GMP_DECLSPEC mp_ptr mpz_limbs_write (mpz_ptr, mp_size_t);  | 
1128  |  |  | 
1129  |  | #define mpz_limbs_modify __gmpz_limbs_modify  | 
1130  |  | __GMP_DECLSPEC mp_ptr mpz_limbs_modify (mpz_ptr, mp_size_t);  | 
1131  |  |  | 
1132  | 0  | #define mpz_limbs_finish __gmpz_limbs_finish  | 
1133  |  | __GMP_DECLSPEC void mpz_limbs_finish (mpz_ptr, mp_size_t);  | 
1134  |  |  | 
1135  | 0  | #define mpz_roinit_n __gmpz_roinit_n  | 
1136  |  | __GMP_DECLSPEC mpz_srcptr mpz_roinit_n (mpz_ptr, mp_srcptr, mp_size_t);  | 
1137  |  |  | 
1138  |  | #define MPZ_ROINIT_N(xp, xs) {{0, (xs),(xp) }} | 
1139  |  |  | 
1140  |  | /**************** Rational (i.e. Q) routines.  ****************/  | 
1141  |  |  | 
1142  |  | #define mpq_abs __gmpq_abs  | 
1143  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_abs)  | 
1144  |  | __GMP_DECLSPEC void mpq_abs (mpq_ptr, mpq_srcptr);  | 
1145  |  | #endif  | 
1146  |  |  | 
1147  |  | #define mpq_add __gmpq_add  | 
1148  |  | __GMP_DECLSPEC void mpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);  | 
1149  |  |  | 
1150  |  | #define mpq_canonicalize __gmpq_canonicalize  | 
1151  |  | __GMP_DECLSPEC void mpq_canonicalize (mpq_ptr);  | 
1152  |  |  | 
1153  |  | #define mpq_clear __gmpq_clear  | 
1154  |  | __GMP_DECLSPEC void mpq_clear (mpq_ptr);  | 
1155  |  |  | 
1156  |  | #define mpq_clears __gmpq_clears  | 
1157  |  | __GMP_DECLSPEC void mpq_clears (mpq_ptr, ...);  | 
1158  |  |  | 
1159  |  | #define mpq_cmp __gmpq_cmp  | 
1160  |  | __GMP_DECLSPEC int mpq_cmp (mpq_srcptr, mpq_srcptr) __GMP_ATTRIBUTE_PURE;  | 
1161  |  |  | 
1162  |  | #define _mpq_cmp_si __gmpq_cmp_si  | 
1163  |  | __GMP_DECLSPEC int _mpq_cmp_si (mpq_srcptr, long, unsigned long) __GMP_ATTRIBUTE_PURE;  | 
1164  |  |  | 
1165  |  | #define _mpq_cmp_ui __gmpq_cmp_ui  | 
1166  |  | __GMP_DECLSPEC int _mpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __GMP_ATTRIBUTE_PURE;  | 
1167  |  |  | 
1168  |  | #define mpq_cmp_z __gmpq_cmp_z  | 
1169  |  | __GMP_DECLSPEC int mpq_cmp_z (mpq_srcptr, mpz_srcptr) __GMP_ATTRIBUTE_PURE;  | 
1170  |  |  | 
1171  |  | #define mpq_div __gmpq_div  | 
1172  |  | __GMP_DECLSPEC void mpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);  | 
1173  |  |  | 
1174  |  | #define mpq_div_2exp __gmpq_div_2exp  | 
1175  |  | __GMP_DECLSPEC void mpq_div_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);  | 
1176  |  |  | 
1177  |  | #define mpq_equal __gmpq_equal  | 
1178  |  | __GMP_DECLSPEC int mpq_equal (mpq_srcptr, mpq_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1179  |  |  | 
1180  |  | #define mpq_get_num __gmpq_get_num  | 
1181  |  | __GMP_DECLSPEC void mpq_get_num (mpz_ptr, mpq_srcptr);  | 
1182  |  |  | 
1183  |  | #define mpq_get_den __gmpq_get_den  | 
1184  |  | __GMP_DECLSPEC void mpq_get_den (mpz_ptr, mpq_srcptr);  | 
1185  |  |  | 
1186  |  | #define mpq_get_d __gmpq_get_d  | 
1187  |  | __GMP_DECLSPEC double mpq_get_d (mpq_srcptr) __GMP_ATTRIBUTE_PURE;  | 
1188  |  |  | 
1189  |  | #define mpq_get_str __gmpq_get_str  | 
1190  |  | __GMP_DECLSPEC char *mpq_get_str (char *, int, mpq_srcptr);  | 
1191  |  |  | 
1192  |  | #define mpq_init __gmpq_init  | 
1193  |  | __GMP_DECLSPEC void mpq_init (mpq_ptr);  | 
1194  |  |  | 
1195  |  | #define mpq_inits __gmpq_inits  | 
1196  |  | __GMP_DECLSPEC void mpq_inits (mpq_ptr, ...);  | 
1197  |  |  | 
1198  |  | #define mpq_inp_str __gmpq_inp_str  | 
1199  |  | #ifdef _GMP_H_HAVE_FILE  | 
1200  |  | __GMP_DECLSPEC size_t mpq_inp_str (mpq_ptr, FILE *, int);  | 
1201  |  | #endif  | 
1202  |  |  | 
1203  |  | #define mpq_inv __gmpq_inv  | 
1204  |  | __GMP_DECLSPEC void mpq_inv (mpq_ptr, mpq_srcptr);  | 
1205  |  |  | 
1206  |  | #define mpq_mul __gmpq_mul  | 
1207  |  | __GMP_DECLSPEC void mpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);  | 
1208  |  |  | 
1209  |  | #define mpq_mul_2exp __gmpq_mul_2exp  | 
1210  |  | __GMP_DECLSPEC void mpq_mul_2exp (mpq_ptr, mpq_srcptr, mp_bitcnt_t);  | 
1211  |  |  | 
1212  |  | #define mpq_neg __gmpq_neg  | 
1213  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpq_neg)  | 
1214  |  | __GMP_DECLSPEC void mpq_neg (mpq_ptr, mpq_srcptr);  | 
1215  |  | #endif  | 
1216  |  |  | 
1217  |  | #define mpq_out_str __gmpq_out_str  | 
1218  |  | #ifdef _GMP_H_HAVE_FILE  | 
1219  |  | __GMP_DECLSPEC size_t mpq_out_str (FILE *, int, mpq_srcptr);  | 
1220  |  | #endif  | 
1221  |  |  | 
1222  |  | #define mpq_set __gmpq_set  | 
1223  |  | __GMP_DECLSPEC void mpq_set (mpq_ptr, mpq_srcptr);  | 
1224  |  |  | 
1225  |  | #define mpq_set_d __gmpq_set_d  | 
1226  |  | __GMP_DECLSPEC void mpq_set_d (mpq_ptr, double);  | 
1227  |  |  | 
1228  |  | #define mpq_set_den __gmpq_set_den  | 
1229  |  | __GMP_DECLSPEC void mpq_set_den (mpq_ptr, mpz_srcptr);  | 
1230  |  |  | 
1231  |  | #define mpq_set_f __gmpq_set_f  | 
1232  |  | __GMP_DECLSPEC void mpq_set_f (mpq_ptr, mpf_srcptr);  | 
1233  |  |  | 
1234  |  | #define mpq_set_num __gmpq_set_num  | 
1235  |  | __GMP_DECLSPEC void mpq_set_num (mpq_ptr, mpz_srcptr);  | 
1236  |  |  | 
1237  |  | #define mpq_set_si __gmpq_set_si  | 
1238  |  | __GMP_DECLSPEC void mpq_set_si (mpq_ptr, signed long int, unsigned long int);  | 
1239  |  |  | 
1240  |  | #define mpq_set_str __gmpq_set_str  | 
1241  |  | __GMP_DECLSPEC int mpq_set_str (mpq_ptr, const char *, int);  | 
1242  |  |  | 
1243  |  | #define mpq_set_ui __gmpq_set_ui  | 
1244  |  | __GMP_DECLSPEC void mpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);  | 
1245  |  |  | 
1246  |  | #define mpq_set_z __gmpq_set_z  | 
1247  |  | __GMP_DECLSPEC void mpq_set_z (mpq_ptr, mpz_srcptr);  | 
1248  |  |  | 
1249  |  | #define mpq_sub __gmpq_sub  | 
1250  |  | __GMP_DECLSPEC void mpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);  | 
1251  |  |  | 
1252  |  | #define mpq_swap __gmpq_swap  | 
1253  |  | __GMP_DECLSPEC void mpq_swap (mpq_ptr, mpq_ptr) __GMP_NOTHROW;  | 
1254  |  |  | 
1255  |  |  | 
1256  |  | /**************** Float (i.e. F) routines.  ****************/  | 
1257  |  |  | 
1258  |  | #define mpf_abs __gmpf_abs  | 
1259  |  | __GMP_DECLSPEC void mpf_abs (mpf_ptr, mpf_srcptr);  | 
1260  |  |  | 
1261  |  | #define mpf_add __gmpf_add  | 
1262  |  | __GMP_DECLSPEC void mpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);  | 
1263  |  |  | 
1264  |  | #define mpf_add_ui __gmpf_add_ui  | 
1265  |  | __GMP_DECLSPEC void mpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);  | 
1266  |  | #define mpf_ceil __gmpf_ceil  | 
1267  |  | __GMP_DECLSPEC void mpf_ceil (mpf_ptr, mpf_srcptr);  | 
1268  |  |  | 
1269  |  | #define mpf_clear __gmpf_clear  | 
1270  |  | __GMP_DECLSPEC void mpf_clear (mpf_ptr);  | 
1271  |  |  | 
1272  |  | #define mpf_clears __gmpf_clears  | 
1273  |  | __GMP_DECLSPEC void mpf_clears (mpf_ptr, ...);  | 
1274  |  |  | 
1275  |  | #define mpf_cmp __gmpf_cmp  | 
1276  |  | __GMP_DECLSPEC int mpf_cmp (mpf_srcptr, mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1277  |  |  | 
1278  |  | #define mpf_cmp_z __gmpf_cmp_z  | 
1279  |  | __GMP_DECLSPEC int mpf_cmp_z (mpf_srcptr, mpz_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1280  |  |  | 
1281  |  | #define mpf_cmp_d __gmpf_cmp_d  | 
1282  |  | __GMP_DECLSPEC int mpf_cmp_d (mpf_srcptr, double) __GMP_ATTRIBUTE_PURE;  | 
1283  |  |  | 
1284  |  | #define mpf_cmp_si __gmpf_cmp_si  | 
1285  |  | __GMP_DECLSPEC int mpf_cmp_si (mpf_srcptr, signed long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1286  |  |  | 
1287  |  | #define mpf_cmp_ui __gmpf_cmp_ui  | 
1288  |  | __GMP_DECLSPEC int mpf_cmp_ui (mpf_srcptr, unsigned long int) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1289  |  |  | 
1290  |  | #define mpf_div __gmpf_div  | 
1291  |  | __GMP_DECLSPEC void mpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);  | 
1292  |  |  | 
1293  |  | #define mpf_div_2exp __gmpf_div_2exp  | 
1294  |  | __GMP_DECLSPEC void mpf_div_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);  | 
1295  |  |  | 
1296  |  | #define mpf_div_ui __gmpf_div_ui  | 
1297  |  | __GMP_DECLSPEC void mpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);  | 
1298  |  |  | 
1299  |  | #define mpf_dump __gmpf_dump  | 
1300  |  | __GMP_DECLSPEC void mpf_dump (mpf_srcptr);  | 
1301  |  |  | 
1302  |  | #define mpf_eq __gmpf_eq  | 
1303  |  | __GMP_DECLSPEC int mpf_eq (mpf_srcptr, mpf_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;  | 
1304  |  |  | 
1305  |  | #define mpf_fits_sint_p __gmpf_fits_sint_p  | 
1306  |  | __GMP_DECLSPEC int mpf_fits_sint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1307  |  |  | 
1308  |  | #define mpf_fits_slong_p __gmpf_fits_slong_p  | 
1309  |  | __GMP_DECLSPEC int mpf_fits_slong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1310  |  |  | 
1311  |  | #define mpf_fits_sshort_p __gmpf_fits_sshort_p  | 
1312  |  | __GMP_DECLSPEC int mpf_fits_sshort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1313  |  |  | 
1314  |  | #define mpf_fits_uint_p __gmpf_fits_uint_p  | 
1315  |  | __GMP_DECLSPEC int mpf_fits_uint_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1316  |  |  | 
1317  |  | #define mpf_fits_ulong_p __gmpf_fits_ulong_p  | 
1318  |  | __GMP_DECLSPEC int mpf_fits_ulong_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1319  |  |  | 
1320  |  | #define mpf_fits_ushort_p __gmpf_fits_ushort_p  | 
1321  |  | __GMP_DECLSPEC int mpf_fits_ushort_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1322  |  |  | 
1323  |  | #define mpf_floor __gmpf_floor  | 
1324  |  | __GMP_DECLSPEC void mpf_floor (mpf_ptr, mpf_srcptr);  | 
1325  |  |  | 
1326  |  | #define mpf_get_d __gmpf_get_d  | 
1327  |  | __GMP_DECLSPEC double mpf_get_d (mpf_srcptr) __GMP_ATTRIBUTE_PURE;  | 
1328  |  |  | 
1329  |  | #define mpf_get_d_2exp __gmpf_get_d_2exp  | 
1330  |  | __GMP_DECLSPEC double mpf_get_d_2exp (signed long int *, mpf_srcptr);  | 
1331  |  |  | 
1332  |  | #define mpf_get_default_prec __gmpf_get_default_prec  | 
1333  |  | __GMP_DECLSPEC mp_bitcnt_t mpf_get_default_prec (void) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1334  |  |  | 
1335  |  | #define mpf_get_prec __gmpf_get_prec  | 
1336  |  | __GMP_DECLSPEC mp_bitcnt_t mpf_get_prec (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1337  |  |  | 
1338  |  | #define mpf_get_si __gmpf_get_si  | 
1339  |  | __GMP_DECLSPEC long mpf_get_si (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1340  |  |  | 
1341  |  | #define mpf_get_str __gmpf_get_str  | 
1342  |  | __GMP_DECLSPEC char *mpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);  | 
1343  |  |  | 
1344  |  | #define mpf_get_ui __gmpf_get_ui  | 
1345  |  | __GMP_DECLSPEC unsigned long mpf_get_ui (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1346  |  |  | 
1347  |  | #define mpf_init __gmpf_init  | 
1348  |  | __GMP_DECLSPEC void mpf_init (mpf_ptr);  | 
1349  |  |  | 
1350  |  | #define mpf_init2 __gmpf_init2  | 
1351  |  | __GMP_DECLSPEC void mpf_init2 (mpf_ptr, mp_bitcnt_t);  | 
1352  |  |  | 
1353  |  | #define mpf_inits __gmpf_inits  | 
1354  |  | __GMP_DECLSPEC void mpf_inits (mpf_ptr, ...);  | 
1355  |  |  | 
1356  |  | #define mpf_init_set __gmpf_init_set  | 
1357  |  | __GMP_DECLSPEC void mpf_init_set (mpf_ptr, mpf_srcptr);  | 
1358  |  |  | 
1359  |  | #define mpf_init_set_d __gmpf_init_set_d  | 
1360  |  | __GMP_DECLSPEC void mpf_init_set_d (mpf_ptr, double);  | 
1361  |  |  | 
1362  |  | #define mpf_init_set_si __gmpf_init_set_si  | 
1363  |  | __GMP_DECLSPEC void mpf_init_set_si (mpf_ptr, signed long int);  | 
1364  |  |  | 
1365  |  | #define mpf_init_set_str __gmpf_init_set_str  | 
1366  |  | __GMP_DECLSPEC int mpf_init_set_str (mpf_ptr, const char *, int);  | 
1367  |  |  | 
1368  |  | #define mpf_init_set_ui __gmpf_init_set_ui  | 
1369  |  | __GMP_DECLSPEC void mpf_init_set_ui (mpf_ptr, unsigned long int);  | 
1370  |  |  | 
1371  |  | #define mpf_inp_str __gmpf_inp_str  | 
1372  |  | #ifdef _GMP_H_HAVE_FILE  | 
1373  |  | __GMP_DECLSPEC size_t mpf_inp_str (mpf_ptr, FILE *, int);  | 
1374  |  | #endif  | 
1375  |  |  | 
1376  |  | #define mpf_integer_p __gmpf_integer_p  | 
1377  |  | __GMP_DECLSPEC int mpf_integer_p (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1378  |  |  | 
1379  |  | #define mpf_mul __gmpf_mul  | 
1380  |  | __GMP_DECLSPEC void mpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);  | 
1381  |  |  | 
1382  |  | #define mpf_mul_2exp __gmpf_mul_2exp  | 
1383  |  | __GMP_DECLSPEC void mpf_mul_2exp (mpf_ptr, mpf_srcptr, mp_bitcnt_t);  | 
1384  |  |  | 
1385  |  | #define mpf_mul_ui __gmpf_mul_ui  | 
1386  |  | __GMP_DECLSPEC void mpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);  | 
1387  |  |  | 
1388  |  | #define mpf_neg __gmpf_neg  | 
1389  |  | __GMP_DECLSPEC void mpf_neg (mpf_ptr, mpf_srcptr);  | 
1390  |  |  | 
1391  |  | #define mpf_out_str __gmpf_out_str  | 
1392  |  | #ifdef _GMP_H_HAVE_FILE  | 
1393  |  | __GMP_DECLSPEC size_t mpf_out_str (FILE *, int, size_t, mpf_srcptr);  | 
1394  |  | #endif  | 
1395  |  |  | 
1396  |  | #define mpf_pow_ui __gmpf_pow_ui  | 
1397  |  | __GMP_DECLSPEC void mpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);  | 
1398  |  |  | 
1399  |  | #define mpf_random2 __gmpf_random2  | 
1400  |  | __GMP_DECLSPEC void mpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);  | 
1401  |  |  | 
1402  |  | #define mpf_reldiff __gmpf_reldiff  | 
1403  |  | __GMP_DECLSPEC void mpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);  | 
1404  |  |  | 
1405  |  | #define mpf_set __gmpf_set  | 
1406  |  | __GMP_DECLSPEC void mpf_set (mpf_ptr, mpf_srcptr);  | 
1407  |  |  | 
1408  |  | #define mpf_set_d __gmpf_set_d  | 
1409  |  | __GMP_DECLSPEC void mpf_set_d (mpf_ptr, double);  | 
1410  |  |  | 
1411  |  | #define mpf_set_default_prec __gmpf_set_default_prec  | 
1412  |  | __GMP_DECLSPEC void mpf_set_default_prec (mp_bitcnt_t) __GMP_NOTHROW;  | 
1413  |  |  | 
1414  |  | #define mpf_set_prec __gmpf_set_prec  | 
1415  |  | __GMP_DECLSPEC void mpf_set_prec (mpf_ptr, mp_bitcnt_t);  | 
1416  |  |  | 
1417  |  | #define mpf_set_prec_raw __gmpf_set_prec_raw  | 
1418  |  | __GMP_DECLSPEC void mpf_set_prec_raw (mpf_ptr, mp_bitcnt_t) __GMP_NOTHROW;  | 
1419  |  |  | 
1420  |  | #define mpf_set_q __gmpf_set_q  | 
1421  |  | __GMP_DECLSPEC void mpf_set_q (mpf_ptr, mpq_srcptr);  | 
1422  |  |  | 
1423  |  | #define mpf_set_si __gmpf_set_si  | 
1424  |  | __GMP_DECLSPEC void mpf_set_si (mpf_ptr, signed long int);  | 
1425  |  |  | 
1426  |  | #define mpf_set_str __gmpf_set_str  | 
1427  |  | __GMP_DECLSPEC int mpf_set_str (mpf_ptr, const char *, int);  | 
1428  |  |  | 
1429  |  | #define mpf_set_ui __gmpf_set_ui  | 
1430  |  | __GMP_DECLSPEC void mpf_set_ui (mpf_ptr, unsigned long int);  | 
1431  |  |  | 
1432  |  | #define mpf_set_z __gmpf_set_z  | 
1433  |  | __GMP_DECLSPEC void mpf_set_z (mpf_ptr, mpz_srcptr);  | 
1434  |  |  | 
1435  |  | #define mpf_size __gmpf_size  | 
1436  |  | __GMP_DECLSPEC size_t mpf_size (mpf_srcptr) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1437  |  |  | 
1438  |  | #define mpf_sqrt __gmpf_sqrt  | 
1439  |  | __GMP_DECLSPEC void mpf_sqrt (mpf_ptr, mpf_srcptr);  | 
1440  |  |  | 
1441  |  | #define mpf_sqrt_ui __gmpf_sqrt_ui  | 
1442  |  | __GMP_DECLSPEC void mpf_sqrt_ui (mpf_ptr, unsigned long int);  | 
1443  |  |  | 
1444  |  | #define mpf_sub __gmpf_sub  | 
1445  |  | __GMP_DECLSPEC void mpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);  | 
1446  |  |  | 
1447  |  | #define mpf_sub_ui __gmpf_sub_ui  | 
1448  |  | __GMP_DECLSPEC void mpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);  | 
1449  |  |  | 
1450  |  | #define mpf_swap __gmpf_swap  | 
1451  |  | __GMP_DECLSPEC void mpf_swap (mpf_ptr, mpf_ptr) __GMP_NOTHROW;  | 
1452  |  |  | 
1453  |  | #define mpf_trunc __gmpf_trunc  | 
1454  |  | __GMP_DECLSPEC void mpf_trunc (mpf_ptr, mpf_srcptr);  | 
1455  |  |  | 
1456  |  | #define mpf_ui_div __gmpf_ui_div  | 
1457  |  | __GMP_DECLSPEC void mpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);  | 
1458  |  |  | 
1459  |  | #define mpf_ui_sub __gmpf_ui_sub  | 
1460  |  | __GMP_DECLSPEC void mpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);  | 
1461  |  |  | 
1462  |  | #define mpf_urandomb __gmpf_urandomb  | 
1463  |  | __GMP_DECLSPEC void mpf_urandomb (mpf_ptr, gmp_randstate_ptr, mp_bitcnt_t);  | 
1464  |  |  | 
1465  |  |  | 
1466  |  | /************ Low level positive-integer (i.e. N) routines.  ************/  | 
1467  |  |  | 
1468  |  | /* This is ugly, but we need to make user calls reach the prefixed function. */  | 
1469  |  |  | 
1470  |  | #define mpn_add __MPN(add)  | 
1471  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add)  | 
1472  |  | __GMP_DECLSPEC mp_limb_t mpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);  | 
1473  |  | #endif  | 
1474  |  |  | 
1475  | 0  | #define mpn_add_1 __MPN(add_1)  | 
1476  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_add_1)  | 
1477  |  | __GMP_DECLSPEC mp_limb_t mpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;  | 
1478  |  | #endif  | 
1479  |  |  | 
1480  | 0  | #define mpn_add_n __MPN(add_n)  | 
1481  |  | __GMP_DECLSPEC mp_limb_t mpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1482  |  |  | 
1483  | 0  | #define mpn_addmul_1 __MPN(addmul_1)  | 
1484  |  | __GMP_DECLSPEC mp_limb_t mpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);  | 
1485  |  |  | 
1486  | 0  | #define mpn_cmp __MPN(cmp)  | 
1487  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_cmp)  | 
1488  |  | __GMP_DECLSPEC int mpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1489  |  | #endif  | 
1490  |  |  | 
1491  | 0  | #define mpn_zero_p __MPN(zero_p)  | 
1492  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_zero_p)  | 
1493  |  | __GMP_DECLSPEC int mpn_zero_p (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1494  |  | #endif  | 
1495  |  |  | 
1496  |  | #define mpn_divexact_1 __MPN(divexact_1)  | 
1497  |  | __GMP_DECLSPEC void mpn_divexact_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);  | 
1498  |  |  | 
1499  |  | #define mpn_divexact_by3(dst,src,size) \  | 
1500  |  |   mpn_divexact_by3c (dst, src, size, __GMP_CAST (mp_limb_t, 0))  | 
1501  |  |  | 
1502  |  | #define mpn_divexact_by3c __MPN(divexact_by3c)  | 
1503  |  | __GMP_DECLSPEC mp_limb_t mpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);  | 
1504  |  |  | 
1505  |  | #define mpn_divmod_1(qp,np,nsize,dlimb) \  | 
1506  |  |   mpn_divrem_1 (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dlimb)  | 
1507  |  |  | 
1508  |  | #define mpn_divrem __MPN(divrem)  | 
1509  |  | __GMP_DECLSPEC mp_limb_t mpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);  | 
1510  |  |  | 
1511  |  | #define mpn_divrem_1 __MPN(divrem_1)  | 
1512  |  | __GMP_DECLSPEC mp_limb_t mpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);  | 
1513  |  |  | 
1514  |  | #define mpn_divrem_2 __MPN(divrem_2)  | 
1515  |  | __GMP_DECLSPEC mp_limb_t mpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);  | 
1516  |  |  | 
1517  |  | #define mpn_div_qr_1 __MPN(div_qr_1)  | 
1518  |  | __GMP_DECLSPEC mp_limb_t mpn_div_qr_1 (mp_ptr, mp_limb_t *, mp_srcptr, mp_size_t, mp_limb_t);  | 
1519  |  |  | 
1520  |  | #define mpn_div_qr_2 __MPN(div_qr_2)  | 
1521  |  | __GMP_DECLSPEC mp_limb_t mpn_div_qr_2 (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_srcptr);  | 
1522  |  |  | 
1523  |  | #define mpn_gcd __MPN(gcd)  | 
1524  |  | __GMP_DECLSPEC mp_size_t mpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);  | 
1525  |  |  | 
1526  |  | #define mpn_gcd_11 __MPN(gcd_11)  | 
1527  |  | __GMP_DECLSPEC mp_limb_t mpn_gcd_11 (mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;  | 
1528  |  |  | 
1529  |  | #define mpn_gcd_1 __MPN(gcd_1)  | 
1530  |  | __GMP_DECLSPEC mp_limb_t mpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;  | 
1531  |  |  | 
1532  |  | #define mpn_gcdext_1 __MPN(gcdext_1)  | 
1533  |  | __GMP_DECLSPEC mp_limb_t mpn_gcdext_1 (mp_limb_signed_t *, mp_limb_signed_t *, mp_limb_t, mp_limb_t);  | 
1534  |  |  | 
1535  |  | #define mpn_gcdext __MPN(gcdext)  | 
1536  |  | __GMP_DECLSPEC mp_size_t mpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);  | 
1537  |  |  | 
1538  |  | #define mpn_get_str __MPN(get_str)  | 
1539  |  | __GMP_DECLSPEC size_t mpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);  | 
1540  |  |  | 
1541  |  | #define mpn_hamdist __MPN(hamdist)  | 
1542  |  | __GMP_DECLSPEC mp_bitcnt_t mpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1543  |  |  | 
1544  | 0  | #define mpn_lshift __MPN(lshift)  | 
1545  |  | __GMP_DECLSPEC mp_limb_t mpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);  | 
1546  |  |  | 
1547  |  | #define mpn_mod_1 __MPN(mod_1)  | 
1548  |  | __GMP_DECLSPEC mp_limb_t mpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;  | 
1549  |  |  | 
1550  |  | #define mpn_mul __MPN(mul)  | 
1551  |  | __GMP_DECLSPEC mp_limb_t mpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);  | 
1552  |  |  | 
1553  | 0  | #define mpn_mul_1 __MPN(mul_1)  | 
1554  |  | __GMP_DECLSPEC mp_limb_t mpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);  | 
1555  |  |  | 
1556  | 0  | #define mpn_mul_n __MPN(mul_n)  | 
1557  |  | __GMP_DECLSPEC void mpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1558  |  |  | 
1559  | 0  | #define mpn_sqr __MPN(sqr)  | 
1560  |  | __GMP_DECLSPEC void mpn_sqr (mp_ptr, mp_srcptr, mp_size_t);  | 
1561  |  |  | 
1562  |  | #define mpn_neg __MPN(neg)  | 
1563  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_neg)  | 
1564  |  | __GMP_DECLSPEC mp_limb_t mpn_neg (mp_ptr, mp_srcptr, mp_size_t);  | 
1565  |  | #endif  | 
1566  |  |  | 
1567  |  | #define mpn_com __MPN(com)  | 
1568  |  | __GMP_DECLSPEC void mpn_com (mp_ptr, mp_srcptr, mp_size_t);  | 
1569  |  |  | 
1570  | 0  | #define mpn_perfect_square_p __MPN(perfect_square_p)  | 
1571  |  | __GMP_DECLSPEC int mpn_perfect_square_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1572  |  |  | 
1573  |  | #define mpn_perfect_power_p __MPN(perfect_power_p)  | 
1574  |  | __GMP_DECLSPEC int mpn_perfect_power_p (mp_srcptr, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1575  |  |  | 
1576  |  | #define mpn_popcount __MPN(popcount)  | 
1577  |  | __GMP_DECLSPEC mp_bitcnt_t mpn_popcount (mp_srcptr, mp_size_t) __GMP_NOTHROW __GMP_ATTRIBUTE_PURE;  | 
1578  |  |  | 
1579  |  | #define mpn_pow_1 __MPN(pow_1)  | 
1580  |  | __GMP_DECLSPEC mp_size_t mpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);  | 
1581  |  |  | 
1582  |  | /* undocumented now, but retained here for upward compatibility */  | 
1583  |  | #define mpn_preinv_mod_1 __MPN(preinv_mod_1)  | 
1584  |  | __GMP_DECLSPEC mp_limb_t mpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __GMP_ATTRIBUTE_PURE;  | 
1585  |  |  | 
1586  |  | #define mpn_random __MPN(random)  | 
1587  |  | __GMP_DECLSPEC void mpn_random (mp_ptr, mp_size_t);  | 
1588  |  |  | 
1589  |  | #define mpn_random2 __MPN(random2)  | 
1590  |  | __GMP_DECLSPEC void mpn_random2 (mp_ptr, mp_size_t);  | 
1591  |  |  | 
1592  | 0  | #define mpn_rshift __MPN(rshift)  | 
1593  |  | __GMP_DECLSPEC mp_limb_t mpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);  | 
1594  |  |  | 
1595  |  | #define mpn_scan0 __MPN(scan0)  | 
1596  |  | __GMP_DECLSPEC mp_bitcnt_t mpn_scan0 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;  | 
1597  |  |  | 
1598  |  | #define mpn_scan1 __MPN(scan1)  | 
1599  |  | __GMP_DECLSPEC mp_bitcnt_t mpn_scan1 (mp_srcptr, mp_bitcnt_t) __GMP_ATTRIBUTE_PURE;  | 
1600  |  |  | 
1601  |  | #define mpn_set_str __MPN(set_str)  | 
1602  |  | __GMP_DECLSPEC mp_size_t mpn_set_str (mp_ptr, const unsigned char *, size_t, int);  | 
1603  |  |  | 
1604  |  | #define mpn_sizeinbase __MPN(sizeinbase)  | 
1605  |  | __GMP_DECLSPEC size_t mpn_sizeinbase (mp_srcptr, mp_size_t, int);  | 
1606  |  |  | 
1607  |  | #define mpn_sqrtrem __MPN(sqrtrem)  | 
1608  |  | __GMP_DECLSPEC mp_size_t mpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);  | 
1609  |  |  | 
1610  |  | #define mpn_sub __MPN(sub)  | 
1611  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub)  | 
1612  |  | __GMP_DECLSPEC mp_limb_t mpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);  | 
1613  |  | #endif  | 
1614  |  |  | 
1615  |  | #define mpn_sub_1 __MPN(sub_1)  | 
1616  |  | #if __GMP_INLINE_PROTOTYPES || defined (__GMP_FORCE_mpn_sub_1)  | 
1617  |  | __GMP_DECLSPEC mp_limb_t mpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) __GMP_NOTHROW;  | 
1618  |  | #endif  | 
1619  |  |  | 
1620  | 0  | #define mpn_sub_n __MPN(sub_n)  | 
1621  |  | __GMP_DECLSPEC mp_limb_t mpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1622  |  |  | 
1623  | 0  | #define mpn_submul_1 __MPN(submul_1)  | 
1624  |  | __GMP_DECLSPEC mp_limb_t mpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);  | 
1625  |  |  | 
1626  |  | #define mpn_tdiv_qr __MPN(tdiv_qr)  | 
1627  |  | __GMP_DECLSPEC void mpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);  | 
1628  |  |  | 
1629  |  | #define mpn_and_n __MPN(and_n)  | 
1630  |  | __GMP_DECLSPEC void mpn_and_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1631  |  | #define mpn_andn_n __MPN(andn_n)  | 
1632  |  | __GMP_DECLSPEC void mpn_andn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1633  |  | #define mpn_nand_n __MPN(nand_n)  | 
1634  |  | __GMP_DECLSPEC void mpn_nand_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1635  |  | #define mpn_ior_n __MPN(ior_n)  | 
1636  |  | __GMP_DECLSPEC void mpn_ior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1637  |  | #define mpn_iorn_n __MPN(iorn_n)  | 
1638  |  | __GMP_DECLSPEC void mpn_iorn_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1639  |  | #define mpn_nior_n __MPN(nior_n)  | 
1640  |  | __GMP_DECLSPEC void mpn_nior_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1641  |  | #define mpn_xor_n __MPN(xor_n)  | 
1642  |  | __GMP_DECLSPEC void mpn_xor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1643  |  | #define mpn_xnor_n __MPN(xnor_n)  | 
1644  |  | __GMP_DECLSPEC void mpn_xnor_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1645  |  |  | 
1646  | 0  | #define mpn_copyi __MPN(copyi)  | 
1647  |  | __GMP_DECLSPEC void mpn_copyi (mp_ptr, mp_srcptr, mp_size_t);  | 
1648  | 0  | #define mpn_copyd __MPN(copyd)  | 
1649  |  | __GMP_DECLSPEC void mpn_copyd (mp_ptr, mp_srcptr, mp_size_t);  | 
1650  | 0  | #define mpn_zero __MPN(zero)  | 
1651  |  | __GMP_DECLSPEC void mpn_zero (mp_ptr, mp_size_t);  | 
1652  |  |  | 
1653  | 0  | #define mpn_cnd_add_n __MPN(cnd_add_n)  | 
1654  |  | __GMP_DECLSPEC mp_limb_t mpn_cnd_add_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1655  | 0  | #define mpn_cnd_sub_n __MPN(cnd_sub_n)  | 
1656  |  | __GMP_DECLSPEC mp_limb_t mpn_cnd_sub_n (mp_limb_t, mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);  | 
1657  |  |  | 
1658  | 0  | #define mpn_sec_add_1 __MPN(sec_add_1)  | 
1659  |  | __GMP_DECLSPEC mp_limb_t mpn_sec_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);  | 
1660  | 0  | #define mpn_sec_add_1_itch __MPN(sec_add_1_itch)  | 
1661  |  | __GMP_DECLSPEC mp_size_t mpn_sec_add_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1662  |  |  | 
1663  | 0  | #define mpn_sec_sub_1 __MPN(sec_sub_1)  | 
1664  |  | __GMP_DECLSPEC mp_limb_t mpn_sec_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);  | 
1665  |  | #define mpn_sec_sub_1_itch __MPN(sec_sub_1_itch)  | 
1666  |  | __GMP_DECLSPEC mp_size_t mpn_sec_sub_1_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1667  |  |  | 
1668  | 0  | #define mpn_cnd_swap  __MPN(cnd_swap)  | 
1669  |  | __GMP_DECLSPEC void mpn_cnd_swap (mp_limb_t, volatile mp_limb_t *, volatile mp_limb_t *, mp_size_t);  | 
1670  |  |  | 
1671  | 0  | #define mpn_sec_mul __MPN(sec_mul)  | 
1672  |  | __GMP_DECLSPEC void mpn_sec_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);  | 
1673  | 0  | #define mpn_sec_mul_itch __MPN(sec_mul_itch)  | 
1674  |  | __GMP_DECLSPEC mp_size_t mpn_sec_mul_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1675  |  |  | 
1676  |  | #define mpn_sec_sqr __MPN(sec_sqr)  | 
1677  |  | __GMP_DECLSPEC void mpn_sec_sqr (mp_ptr, mp_srcptr, mp_size_t, mp_ptr);  | 
1678  |  | #define mpn_sec_sqr_itch __MPN(sec_sqr_itch)  | 
1679  |  | __GMP_DECLSPEC mp_size_t mpn_sec_sqr_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1680  |  |  | 
1681  | 0  | #define mpn_sec_powm __MPN(sec_powm)  | 
1682  |  | __GMP_DECLSPEC void mpn_sec_powm (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_bitcnt_t, mp_srcptr, mp_size_t, mp_ptr);  | 
1683  | 0  | #define mpn_sec_powm_itch __MPN(sec_powm_itch)  | 
1684  |  | __GMP_DECLSPEC mp_size_t mpn_sec_powm_itch (mp_size_t, mp_bitcnt_t, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1685  |  |  | 
1686  | 0  | #define mpn_sec_tabselect __MPN(sec_tabselect)  | 
1687  |  | __GMP_DECLSPEC void mpn_sec_tabselect (volatile mp_limb_t *, volatile const mp_limb_t *, mp_size_t, mp_size_t, mp_size_t);  | 
1688  |  |  | 
1689  |  | #define mpn_sec_div_qr __MPN(sec_div_qr)  | 
1690  |  | __GMP_DECLSPEC mp_limb_t mpn_sec_div_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);  | 
1691  |  | #define mpn_sec_div_qr_itch __MPN(sec_div_qr_itch)  | 
1692  |  | __GMP_DECLSPEC mp_size_t mpn_sec_div_qr_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1693  | 0  | #define mpn_sec_div_r __MPN(sec_div_r)  | 
1694  |  | __GMP_DECLSPEC void mpn_sec_div_r (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_ptr);  | 
1695  | 0  | #define mpn_sec_div_r_itch __MPN(sec_div_r_itch)  | 
1696  |  | __GMP_DECLSPEC mp_size_t mpn_sec_div_r_itch (mp_size_t, mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1697  |  |  | 
1698  | 0  | #define mpn_sec_invert __MPN(sec_invert)  | 
1699  |  | __GMP_DECLSPEC int mpn_sec_invert (mp_ptr, mp_ptr, mp_srcptr, mp_size_t, mp_bitcnt_t, mp_ptr);  | 
1700  | 0  | #define mpn_sec_invert_itch __MPN(sec_invert_itch)  | 
1701  |  | __GMP_DECLSPEC mp_size_t mpn_sec_invert_itch (mp_size_t) __GMP_ATTRIBUTE_PURE;  | 
1702  |  |  | 
1703  |  |  | 
1704  |  | /**************** mpz inlines ****************/  | 
1705  |  |  | 
1706  |  | /* The following are provided as inlines where possible, but always exist as  | 
1707  |  |    library functions too, for binary compatibility.  | 
1708  |  |  | 
1709  |  |    Within gmp itself this inlining generally isn't relied on, since it  | 
1710  |  |    doesn't get done for all compilers, whereas if something is worth  | 
1711  |  |    inlining then it's worth arranging always.  | 
1712  |  |  | 
1713  |  |    There are two styles of inlining here.  When the same bit of code is  | 
1714  |  |    wanted for the inline as for the library version, then __GMP_FORCE_foo  | 
1715  |  |    arranges for that code to be emitted and the __GMP_EXTERN_INLINE  | 
1716  |  |    directive suppressed, eg. mpz_fits_uint_p.  When a different bit of code  | 
1717  |  |    is wanted for the inline than for the library version, then  | 
1718  |  |    __GMP_FORCE_foo arranges the inline to be suppressed, eg. mpz_abs.  */  | 
1719  |  |  | 
1720  |  | #if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_abs)  | 
1721  |  | __GMP_EXTERN_INLINE void  | 
1722  |  | mpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)  | 
1723  | 0  | { | 
1724  | 0  |   if (__gmp_w != __gmp_u)  | 
1725  | 0  |     mpz_set (__gmp_w, __gmp_u);  | 
1726  | 0  |   __gmp_w->_mp_size = __GMP_ABS (__gmp_w->_mp_size);  | 
1727  | 0  | }  | 
1728  |  | #endif  | 
1729  |  |  | 
1730  |  | #if GMP_NAIL_BITS == 0  | 
1731  |  | #define __GMPZ_FITS_UTYPE_P(z,maxval)         \  | 
1732  |  |   mp_size_t  __gmp_n = z->_mp_size;         \  | 
1733  |  |   mp_ptr  __gmp_p = z->_mp_d;           \  | 
1734  |  |   return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval));  | 
1735  |  | #else  | 
1736  |  | #define __GMPZ_FITS_UTYPE_P(z,maxval)         \  | 
1737  |  |   mp_size_t  __gmp_n = z->_mp_size;         \  | 
1738  |  |   mp_ptr  __gmp_p = z->_mp_d;           \  | 
1739  |  |   return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= maxval)  \  | 
1740  |  |     || (__gmp_n == 2 && __gmp_p[1] <= ((mp_limb_t) maxval >> GMP_NUMB_BITS)));  | 
1741  |  | #endif  | 
1742  |  |  | 
1743  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_uint_p)  | 
1744  |  | #if ! defined (__GMP_FORCE_mpz_fits_uint_p)  | 
1745  |  | __GMP_EXTERN_INLINE  | 
1746  |  | #endif  | 
1747  |  | int  | 
1748  |  | mpz_fits_uint_p (mpz_srcptr __gmp_z) __GMP_NOTHROW  | 
1749  | 0  | { | 
1750  | 0  |   __GMPZ_FITS_UTYPE_P (__gmp_z, UINT_MAX);  | 
1751  | 0  | }  | 
1752  |  | #endif  | 
1753  |  |  | 
1754  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ulong_p)  | 
1755  |  | #if ! defined (__GMP_FORCE_mpz_fits_ulong_p)  | 
1756  |  | __GMP_EXTERN_INLINE  | 
1757  |  | #endif  | 
1758  |  | int  | 
1759  |  | mpz_fits_ulong_p (mpz_srcptr __gmp_z) __GMP_NOTHROW  | 
1760  | 0  | { | 
1761  | 0  |   __GMPZ_FITS_UTYPE_P (__gmp_z, ULONG_MAX);  | 
1762  | 0  | }  | 
1763  |  | #endif  | 
1764  |  |  | 
1765  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_fits_ushort_p)  | 
1766  |  | #if ! defined (__GMP_FORCE_mpz_fits_ushort_p)  | 
1767  |  | __GMP_EXTERN_INLINE  | 
1768  |  | #endif  | 
1769  |  | int  | 
1770  |  | mpz_fits_ushort_p (mpz_srcptr __gmp_z) __GMP_NOTHROW  | 
1771  | 0  | { | 
1772  | 0  |   __GMPZ_FITS_UTYPE_P (__gmp_z, USHRT_MAX);  | 
1773  | 0  | }  | 
1774  |  | #endif  | 
1775  |  |  | 
1776  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_get_ui)  | 
1777  |  | #if ! defined (__GMP_FORCE_mpz_get_ui)  | 
1778  |  | __GMP_EXTERN_INLINE  | 
1779  |  | #endif  | 
1780  |  | unsigned long  | 
1781  |  | mpz_get_ui (mpz_srcptr __gmp_z) __GMP_NOTHROW  | 
1782  |  | { | 
1783  |  |   mp_ptr __gmp_p = __gmp_z->_mp_d;  | 
1784  |  |   mp_size_t __gmp_n = __gmp_z->_mp_size;  | 
1785  |  |   mp_limb_t __gmp_l = __gmp_p[0];  | 
1786  |  |   /* This is a "#if" rather than a plain "if" so as to avoid gcc warnings  | 
1787  |  |      about "<< GMP_NUMB_BITS" exceeding the type size, and to avoid Borland  | 
1788  |  |      C++ 6.0 warnings about condition always true for something like  | 
1789  |  |      "ULONG_MAX < GMP_NUMB_MASK".  */  | 
1790  |  | #if GMP_NAIL_BITS == 0 || defined (_LONG_LONG_LIMB)  | 
1791  |  |   /* limb==long and no nails, or limb==longlong, one limb is enough */  | 
1792  |  |   return (__gmp_n != 0 ? __gmp_l : 0);  | 
1793  |  | #else  | 
1794  |  |   /* limb==long and nails, need two limbs when available */  | 
1795  |  |   __gmp_n = __GMP_ABS (__gmp_n);  | 
1796  |  |   if (__gmp_n <= 1)  | 
1797  |  |     return (__gmp_n != 0 ? __gmp_l : 0);  | 
1798  |  |   else  | 
1799  |  |     return __gmp_l + (__gmp_p[1] << GMP_NUMB_BITS);  | 
1800  |  | #endif  | 
1801  |  | }  | 
1802  |  | #endif  | 
1803  |  |  | 
1804  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_getlimbn)  | 
1805  |  | #if ! defined (__GMP_FORCE_mpz_getlimbn)  | 
1806  |  | __GMP_EXTERN_INLINE  | 
1807  |  | #endif  | 
1808  |  | mp_limb_t  | 
1809  |  | mpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n) __GMP_NOTHROW  | 
1810  | 0  | { | 
1811  | 0  |   mp_limb_t  __gmp_result = 0;  | 
1812  | 0  |   if (__GMP_LIKELY (__gmp_n >= 0 && __gmp_n < __GMP_ABS (__gmp_z->_mp_size)))  | 
1813  | 0  |     __gmp_result = __gmp_z->_mp_d[__gmp_n];  | 
1814  | 0  |   return __gmp_result;  | 
1815  | 0  | }  | 
1816  |  | #endif  | 
1817  |  |  | 
1818  |  | #if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpz_neg)  | 
1819  |  | __GMP_EXTERN_INLINE void  | 
1820  |  | mpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)  | 
1821  | 0  | { | 
1822  | 0  |   if (__gmp_w != __gmp_u)  | 
1823  | 0  |     mpz_set (__gmp_w, __gmp_u);  | 
1824  | 0  |   __gmp_w->_mp_size = - __gmp_w->_mp_size;  | 
1825  | 0  | }  | 
1826  |  | #endif  | 
1827  |  |  | 
1828  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_perfect_square_p)  | 
1829  |  | #if ! defined (__GMP_FORCE_mpz_perfect_square_p)  | 
1830  |  | __GMP_EXTERN_INLINE  | 
1831  |  | #endif  | 
1832  |  | int  | 
1833  |  | mpz_perfect_square_p (mpz_srcptr __gmp_a)  | 
1834  | 0  | { | 
1835  | 0  |   mp_size_t __gmp_asize;  | 
1836  | 0  |   int       __gmp_result;  | 
1837  |  | 
  | 
1838  | 0  |   __gmp_asize = __gmp_a->_mp_size;  | 
1839  | 0  |   __gmp_result = (__gmp_asize >= 0);  /* zero is a square, negatives are not */  | 
1840  | 0  |   if (__GMP_LIKELY (__gmp_asize > 0))  | 
1841  | 0  |     __gmp_result = mpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);  | 
1842  | 0  |   return __gmp_result;  | 
1843  | 0  | }  | 
1844  |  | #endif  | 
1845  |  |  | 
1846  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_popcount)  | 
1847  |  | #if ! defined (__GMP_FORCE_mpz_popcount)  | 
1848  |  | __GMP_EXTERN_INLINE  | 
1849  |  | #endif  | 
1850  |  | mp_bitcnt_t  | 
1851  |  | mpz_popcount (mpz_srcptr __gmp_u) __GMP_NOTHROW  | 
1852  | 0  | { | 
1853  | 0  |   mp_size_t      __gmp_usize;  | 
1854  | 0  |   mp_bitcnt_t    __gmp_result;  | 
1855  | 0  | 
  | 
1856  | 0  |   __gmp_usize = __gmp_u->_mp_size;  | 
1857  | 0  |   __gmp_result = (__gmp_usize < 0 ? ~ __GMP_CAST (mp_bitcnt_t, 0) : __GMP_CAST (mp_bitcnt_t, 0));  | 
1858  | 0  |   if (__GMP_LIKELY (__gmp_usize > 0))  | 
1859  | 0  |     __gmp_result =  mpn_popcount (__gmp_u->_mp_d, __gmp_usize);  | 
1860  | 0  |   return __gmp_result;  | 
1861  | 0  | }  | 
1862  |  | #endif  | 
1863  |  |  | 
1864  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_set_q)  | 
1865  |  | #if ! defined (__GMP_FORCE_mpz_set_q)  | 
1866  |  | __GMP_EXTERN_INLINE  | 
1867  |  | #endif  | 
1868  |  | void  | 
1869  |  | mpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)  | 
1870  | 0  | { | 
1871  | 0  |   mpz_tdiv_q (__gmp_w, mpq_numref (__gmp_u), mpq_denref (__gmp_u));  | 
1872  | 0  | }  | 
1873  |  | #endif  | 
1874  |  |  | 
1875  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpz_size)  | 
1876  |  | #if ! defined (__GMP_FORCE_mpz_size)  | 
1877  |  | __GMP_EXTERN_INLINE  | 
1878  |  | #endif  | 
1879  |  | size_t  | 
1880  |  | mpz_size (mpz_srcptr __gmp_z) __GMP_NOTHROW  | 
1881  | 0  | { | 
1882  | 0  |   return __GMP_ABS (__gmp_z->_mp_size);  | 
1883  | 0  | }  | 
1884  |  | #endif  | 
1885  |  |  | 
1886  |  |  | 
1887  |  | /**************** mpq inlines ****************/  | 
1888  |  |  | 
1889  |  | #if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_abs)  | 
1890  |  | __GMP_EXTERN_INLINE void  | 
1891  |  | mpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)  | 
1892  | 0  | { | 
1893  | 0  |   if (__gmp_w != __gmp_u)  | 
1894  | 0  |     mpq_set (__gmp_w, __gmp_u);  | 
1895  | 0  |   __gmp_w->_mp_num._mp_size = __GMP_ABS (__gmp_w->_mp_num._mp_size);  | 
1896  | 0  | }  | 
1897  |  | #endif  | 
1898  |  |  | 
1899  |  | #if defined (__GMP_EXTERN_INLINE) && ! defined (__GMP_FORCE_mpq_neg)  | 
1900  |  | __GMP_EXTERN_INLINE void  | 
1901  |  | mpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)  | 
1902  | 0  | { | 
1903  | 0  |   if (__gmp_w != __gmp_u)  | 
1904  | 0  |     mpq_set (__gmp_w, __gmp_u);  | 
1905  | 0  |   __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;  | 
1906  | 0  | }  | 
1907  |  | #endif  | 
1908  |  |  | 
1909  |  |  | 
1910  |  | /**************** mpn inlines ****************/  | 
1911  |  |  | 
1912  |  | /* The comments with __GMPN_ADD_1 below apply here too.  | 
1913  |  |  | 
1914  |  |    The test for FUNCTION returning 0 should predict well.  If it's assumed  | 
1915  |  |    {yp,ysize} will usually have a random number of bits then the high limb | 
1916  |  |    won't be full and a carry out will occur a good deal less than 50% of the  | 
1917  |  |    time.  | 
1918  |  |  | 
1919  |  |    ysize==0 isn't a documented feature, but is used internally in a few  | 
1920  |  |    places.  | 
1921  |  |  | 
1922  |  |    Producing cout last stops it using up a register during the main part of  | 
1923  |  |    the calculation, though gcc (as of 3.0) on an "if (mpn_add (...))"  | 
1924  |  |    doesn't seem able to move the true and false legs of the conditional up  | 
1925  |  |    to the two places cout is generated.  */  | 
1926  |  |  | 
1927  |  | #define __GMPN_AORS(cout, wp, xp, xsize, yp, ysize, FUNCTION, TEST)     \  | 
1928  |  |   do {                                                                  \ | 
1929  |  |     mp_size_t  __gmp_i;                                                 \  | 
1930  |  |     mp_limb_t  __gmp_x;                                                 \  | 
1931  |  |                                                                         \  | 
1932  |  |     /* ASSERT ((ysize) >= 0); */                                        \  | 
1933  |  |     /* ASSERT ((xsize) >= (ysize)); */                                  \  | 
1934  |  |     /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, xp, xsize)); */      \  | 
1935  |  |     /* ASSERT (MPN_SAME_OR_SEPARATE2_P (wp, xsize, yp, ysize)); */      \  | 
1936  |  |                                                                         \  | 
1937  |  |     __gmp_i = (ysize);                                                  \  | 
1938  |  |     if (__gmp_i != 0)                                                   \  | 
1939  |  |       {                                                                 \ | 
1940  |  |         if (FUNCTION (wp, xp, yp, __gmp_i))                             \  | 
1941  |  |           {                                                             \ | 
1942  |  |             do                                                          \  | 
1943  |  |               {                                                         \ | 
1944  |  |                 if (__gmp_i >= (xsize))                                 \  | 
1945  |  |                   {                                                     \ | 
1946  |  |                     (cout) = 1;                                         \  | 
1947  |  |                     goto __gmp_done;                                    \  | 
1948  |  |                   }                                                     \  | 
1949  |  |                 __gmp_x = (xp)[__gmp_i];                                \  | 
1950  |  |               }                                                         \  | 
1951  |  |             while (TEST);                                               \  | 
1952  |  |           }                                                             \  | 
1953  |  |       }                                                                 \  | 
1954  |  |     if ((wp) != (xp))                                                   \  | 
1955  |  |       __GMPN_COPY_REST (wp, xp, xsize, __gmp_i);                        \  | 
1956  |  |     (cout) = 0;                                                         \  | 
1957  |  |   __gmp_done:                                                           \  | 
1958  |  |     ;                                                                   \  | 
1959  |  |   } while (0)  | 
1960  |  |  | 
1961  |  | #define __GMPN_ADD(cout, wp, xp, xsize, yp, ysize)              \  | 
1962  |  |   __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_add_n,       \  | 
1963  |  |                (((wp)[__gmp_i++] = (__gmp_x + 1) & GMP_NUMB_MASK) == 0))  | 
1964  |  | #define __GMPN_SUB(cout, wp, xp, xsize, yp, ysize)              \  | 
1965  |  |   __GMPN_AORS (cout, wp, xp, xsize, yp, ysize, mpn_sub_n,       \  | 
1966  |  |                (((wp)[__gmp_i++] = (__gmp_x - 1) & GMP_NUMB_MASK), __gmp_x == 0))  | 
1967  |  |  | 
1968  |  |  | 
1969  |  | /* The use of __gmp_i indexing is designed to ensure a compile time src==dst  | 
1970  |  |    remains nice and clear to the compiler, so that __GMPN_COPY_REST can  | 
1971  |  |    disappear, and the load/add/store gets a chance to become a  | 
1972  |  |    read-modify-write on CISC CPUs.  | 
1973  |  |  | 
1974  |  |    Alternatives:  | 
1975  |  |  | 
1976  |  |    Using a pair of pointers instead of indexing would be possible, but gcc  | 
1977  |  |    isn't able to recognise compile-time src==dst in that case, even when the  | 
1978  |  |    pointers are incremented more or less together.  Other compilers would  | 
1979  |  |    very likely have similar difficulty.  | 
1980  |  |  | 
1981  |  |    gcc could use "if (__builtin_constant_p(src==dst) && src==dst)" or  | 
1982  |  |    similar to detect a compile-time src==dst.  This works nicely on gcc  | 
1983  |  |    2.95.x, it's not good on gcc 3.0 where __builtin_constant_p(p==p) seems  | 
1984  |  |    to be always false, for a pointer p.  But the current code form seems  | 
1985  |  |    good enough for src==dst anyway.  | 
1986  |  |  | 
1987  |  |    gcc on x86 as usual doesn't give particularly good flags handling for the  | 
1988  |  |    carry/borrow detection.  It's tempting to want some multi instruction asm  | 
1989  |  |    blocks to help it, and this was tried, but in truth there's only a few  | 
1990  |  |    instructions to save and any gain is all too easily lost by register  | 
1991  |  |    juggling setting up for the asm.  */  | 
1992  |  |  | 
1993  |  | #if GMP_NAIL_BITS == 0  | 
1994  |  | #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)   \  | 
1995  | 0  |   do {               \ | 
1996  | 0  |     mp_size_t  __gmp_i;           \  | 
1997  | 0  |     mp_limb_t  __gmp_x, __gmp_r;                                \  | 
1998  | 0  |                 \  | 
1999  | 0  |     /* ASSERT ((n) >= 1); */          \  | 
2000  | 0  |     /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */  \  | 
2001  | 0  |                 \  | 
2002  | 0  |     __gmp_x = (src)[0];           \  | 
2003  | 0  |     __gmp_r = __gmp_x OP (v);                                   \  | 
2004  | 0  |     (dst)[0] = __gmp_r;           \  | 
2005  | 0  |     if (CB (__gmp_r, __gmp_x, (v)))                             \  | 
2006  | 0  |       {               \ | 
2007  | 0  |   (cout) = 1;           \  | 
2008  | 0  |   for (__gmp_i = 1; __gmp_i < (n);)                       \  | 
2009  | 0  |     {             \ | 
2010  | 0  |       __gmp_x = (src)[__gmp_i];                           \  | 
2011  | 0  |       __gmp_r = __gmp_x OP 1;                             \  | 
2012  | 0  |       (dst)[__gmp_i] = __gmp_r;                           \  | 
2013  | 0  |       ++__gmp_i;            \  | 
2014  | 0  |       if (!CB (__gmp_r, __gmp_x, 1))                      \  | 
2015  | 0  |         {             \ | 
2016  | 0  |     if ((src) != (dst))       \  | 
2017  | 0  |       __GMPN_COPY_REST (dst, src, n, __gmp_i);      \  | 
2018  | 0  |     (cout) = 0;         \  | 
2019  | 0  |     break;            \  | 
2020  | 0  |         }             \  | 
2021  | 0  |     }             \  | 
2022  | 0  |       }               \  | 
2023  | 0  |     else              \  | 
2024  | 0  |       {               \ | 
2025  | 0  |   if ((src) != (dst))         \  | 
2026  | 0  |     __GMPN_COPY_REST (dst, src, n, 1);      \  | 
2027  | 0  |   (cout) = 0;           \  | 
2028  | 0  |       }               \  | 
2029  | 0  |   } while (0)  | 
2030  |  | #endif  | 
2031  |  |  | 
2032  |  | #if GMP_NAIL_BITS >= 1  | 
2033  |  | #define __GMPN_AORS_1(cout, dst, src, n, v, OP, CB)   \  | 
2034  |  |   do {                \ | 
2035  |  |     mp_size_t  __gmp_i;           \  | 
2036  |  |     mp_limb_t  __gmp_x, __gmp_r;        \  | 
2037  |  |                 \  | 
2038  |  |     /* ASSERT ((n) >= 1); */          \  | 
2039  |  |     /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, n)); */  \  | 
2040  |  |                 \  | 
2041  |  |     __gmp_x = (src)[0];           \  | 
2042  |  |     __gmp_r = __gmp_x OP (v);         \  | 
2043  |  |     (dst)[0] = __gmp_r & GMP_NUMB_MASK;       \  | 
2044  |  |     if (__gmp_r >> GMP_NUMB_BITS != 0)        \  | 
2045  |  |       {               \ | 
2046  |  |   (cout) = 1;           \  | 
2047  |  |   for (__gmp_i = 1; __gmp_i < (n);)     \  | 
2048  |  |     {             \ | 
2049  |  |       __gmp_x = (src)[__gmp_i];       \  | 
2050  |  |       __gmp_r = __gmp_x OP 1;       \  | 
2051  |  |       (dst)[__gmp_i] = __gmp_r & GMP_NUMB_MASK;   \  | 
2052  |  |       ++__gmp_i;            \  | 
2053  |  |       if (__gmp_r >> GMP_NUMB_BITS == 0)      \  | 
2054  |  |         {             \ | 
2055  |  |     if ((src) != (dst))       \  | 
2056  |  |       __GMPN_COPY_REST (dst, src, n, __gmp_i);  \  | 
2057  |  |     (cout) = 0;         \  | 
2058  |  |     break;            \  | 
2059  |  |         }             \  | 
2060  |  |     }             \  | 
2061  |  |       }               \  | 
2062  |  |     else              \  | 
2063  |  |       {               \ | 
2064  |  |   if ((src) != (dst))         \  | 
2065  |  |     __GMPN_COPY_REST (dst, src, n, 1);      \  | 
2066  |  |   (cout) = 0;           \  | 
2067  |  |       }               \  | 
2068  |  |   } while (0)  | 
2069  |  | #endif  | 
2070  |  |  | 
2071  | 0  | #define __GMPN_ADDCB(r,x,y) ((r) < (y))  | 
2072  |  | #define __GMPN_SUBCB(r,x,y) ((x) < (y))  | 
2073  |  |  | 
2074  |  | #define __GMPN_ADD_1(cout, dst, src, n, v)       \  | 
2075  | 0  |   __GMPN_AORS_1(cout, dst, src, n, v, +, __GMPN_ADDCB)  | 
2076  |  | #define __GMPN_SUB_1(cout, dst, src, n, v)       \  | 
2077  |  |   __GMPN_AORS_1(cout, dst, src, n, v, -, __GMPN_SUBCB)  | 
2078  |  |  | 
2079  |  |  | 
2080  |  | /* Compare {xp,size} and {yp,size}, setting "result" to positive, zero or | 
2081  |  |    negative.  size==0 is allowed.  On random data usually only one limb will  | 
2082  |  |    need to be examined to get a result, so it's worth having it inline.  */  | 
2083  |  | #define __GMPN_CMP(result, xp, yp, size)                                \  | 
2084  | 0  |   do {                                                                  \ | 
2085  | 0  |     mp_size_t  __gmp_i;                                                 \  | 
2086  | 0  |     mp_limb_t  __gmp_x, __gmp_y;                                        \  | 
2087  | 0  |                                                                         \  | 
2088  | 0  |     /* ASSERT ((size) >= 0); */                                         \  | 
2089  | 0  |                                                                         \  | 
2090  | 0  |     (result) = 0;                                                       \  | 
2091  | 0  |     __gmp_i = (size);                                                   \  | 
2092  | 0  |     while (--__gmp_i >= 0)                                              \  | 
2093  | 0  |       {                                                                 \ | 
2094  | 0  |         __gmp_x = (xp)[__gmp_i];                                        \  | 
2095  | 0  |         __gmp_y = (yp)[__gmp_i];                                        \  | 
2096  | 0  |         if (__gmp_x != __gmp_y)                                         \  | 
2097  | 0  |           {                                                             \ | 
2098  | 0  |             /* Cannot use __gmp_x - __gmp_y, may overflow an "int" */   \  | 
2099  | 0  |             (result) = (__gmp_x > __gmp_y ? 1 : -1);                    \  | 
2100  | 0  |             break;                                                      \  | 
2101  | 0  |           }                                                             \  | 
2102  | 0  |       }                                                                 \  | 
2103  | 0  |   } while (0)  | 
2104  |  |  | 
2105  |  |  | 
2106  |  | #if defined (__GMPN_COPY) && ! defined (__GMPN_COPY_REST)  | 
2107  |  | #define __GMPN_COPY_REST(dst, src, size, start)                 \  | 
2108  |  |   do {                                                          \ | 
2109  |  |     /* ASSERT ((start) >= 0); */                                \  | 
2110  |  |     /* ASSERT ((start) <= (size)); */                           \  | 
2111  |  |     __GMPN_COPY ((dst)+(start), (src)+(start), (size)-(start)); \  | 
2112  |  |   } while (0)  | 
2113  |  | #endif  | 
2114  |  |  | 
2115  |  | /* Copy {src,size} to {dst,size}, starting at "start".  This is designed to | 
2116  |  |    keep the indexing dst[j] and src[j] nice and simple for __GMPN_ADD_1,  | 
2117  |  |    __GMPN_ADD, etc.  */  | 
2118  |  | #if ! defined (__GMPN_COPY_REST)  | 
2119  |  | #define __GMPN_COPY_REST(dst, src, size, start)                 \  | 
2120  | 0  |   do {                                                          \ | 
2121  | 0  |     mp_size_t __gmp_j;                                          \  | 
2122  | 0  |     /* ASSERT ((size) >= 0); */                                 \  | 
2123  | 0  |     /* ASSERT ((start) >= 0); */                                \  | 
2124  | 0  |     /* ASSERT ((start) <= (size)); */                           \  | 
2125  | 0  |     /* ASSERT (MPN_SAME_OR_SEPARATE_P (dst, src, size)); */     \  | 
2126  | 0  |     __GMP_CRAY_Pragma ("_CRI ivdep");                           \ | 
2127  | 0  |     for (__gmp_j = (start); __gmp_j < (size); __gmp_j++)        \  | 
2128  | 0  |       (dst)[__gmp_j] = (src)[__gmp_j];                          \  | 
2129  | 0  |   } while (0)  | 
2130  |  | #endif  | 
2131  |  |  | 
2132  |  | /* Enhancement: Use some of the smarter code from gmp-impl.h.  Maybe use  | 
2133  |  |    mpn_copyi if there's a native version, and if we don't mind demanding  | 
2134  |  |    binary compatibility for it (on targets which use it).  */  | 
2135  |  |  | 
2136  |  | #if ! defined (__GMPN_COPY)  | 
2137  |  | #define __GMPN_COPY(dst, src, size)   __GMPN_COPY_REST (dst, src, size, 0)  | 
2138  |  | #endif  | 
2139  |  |  | 
2140  |  |  | 
2141  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add)  | 
2142  |  | #if ! defined (__GMP_FORCE_mpn_add)  | 
2143  |  | __GMP_EXTERN_INLINE  | 
2144  |  | #endif  | 
2145  |  | mp_limb_t  | 
2146  |  | mpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)  | 
2147  |  | { | 
2148  |  |   mp_limb_t  __gmp_c;  | 
2149  |  |   __GMPN_ADD (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);  | 
2150  |  |   return __gmp_c;  | 
2151  |  | }  | 
2152  |  | #endif  | 
2153  |  |  | 
2154  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_add_1)  | 
2155  |  | #if ! defined (__GMP_FORCE_mpn_add_1)  | 
2156  |  | __GMP_EXTERN_INLINE  | 
2157  |  | #endif  | 
2158  |  | mp_limb_t  | 
2159  |  | mpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW  | 
2160  | 0  | { | 
2161  | 0  |   mp_limb_t  __gmp_c;  | 
2162  | 0  |   __GMPN_ADD_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);  | 
2163  | 0  |   return __gmp_c;  | 
2164  | 0  | }  | 
2165  |  | #endif  | 
2166  |  |  | 
2167  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_cmp)  | 
2168  |  | #if ! defined (__GMP_FORCE_mpn_cmp)  | 
2169  |  | __GMP_EXTERN_INLINE  | 
2170  |  | #endif  | 
2171  |  | int  | 
2172  |  | mpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size) __GMP_NOTHROW  | 
2173  | 0  | { | 
2174  | 0  |   int __gmp_result;  | 
2175  | 0  |   __GMPN_CMP (__gmp_result, __gmp_xp, __gmp_yp, __gmp_size);  | 
2176  | 0  |   return __gmp_result;  | 
2177  | 0  | }  | 
2178  |  | #endif  | 
2179  |  |  | 
2180  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_zero_p)  | 
2181  |  | #if ! defined (__GMP_FORCE_mpn_zero_p)  | 
2182  |  | __GMP_EXTERN_INLINE  | 
2183  |  | #endif  | 
2184  |  | int  | 
2185  |  | mpn_zero_p (mp_srcptr __gmp_p, mp_size_t __gmp_n) __GMP_NOTHROW  | 
2186  | 0  | { | 
2187  |  |   /* if (__GMP_LIKELY (__gmp_n > 0)) */  | 
2188  | 0  |     do { | 
2189  | 0  |       if (__gmp_p[--__gmp_n] != 0)  | 
2190  | 0  |   return 0;  | 
2191  | 0  |     } while (__gmp_n != 0);  | 
2192  | 0  |   return 1;  | 
2193  | 0  | }  | 
2194  |  | #endif  | 
2195  |  |  | 
2196  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub)  | 
2197  |  | #if ! defined (__GMP_FORCE_mpn_sub)  | 
2198  |  | __GMP_EXTERN_INLINE  | 
2199  |  | #endif  | 
2200  |  | mp_limb_t  | 
2201  |  | mpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)  | 
2202  |  | { | 
2203  |  |   mp_limb_t  __gmp_c;  | 
2204  |  |   __GMPN_SUB (__gmp_c, __gmp_wp, __gmp_xp, __gmp_xsize, __gmp_yp, __gmp_ysize);  | 
2205  |  |   return __gmp_c;  | 
2206  |  | }  | 
2207  |  | #endif  | 
2208  |  |  | 
2209  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_sub_1)  | 
2210  |  | #if ! defined (__GMP_FORCE_mpn_sub_1)  | 
2211  |  | __GMP_EXTERN_INLINE  | 
2212  |  | #endif  | 
2213  |  | mp_limb_t  | 
2214  |  | mpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n) __GMP_NOTHROW  | 
2215  |  | { | 
2216  |  |   mp_limb_t  __gmp_c;  | 
2217  |  |   __GMPN_SUB_1 (__gmp_c, __gmp_dst, __gmp_src, __gmp_size, __gmp_n);  | 
2218  |  |   return __gmp_c;  | 
2219  |  | }  | 
2220  |  | #endif  | 
2221  |  |  | 
2222  |  | #if defined (__GMP_EXTERN_INLINE) || defined (__GMP_FORCE_mpn_neg)  | 
2223  |  | #if ! defined (__GMP_FORCE_mpn_neg)  | 
2224  |  | __GMP_EXTERN_INLINE  | 
2225  |  | #endif  | 
2226  |  | mp_limb_t  | 
2227  |  | mpn_neg (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)  | 
2228  |  | { | 
2229  |  |   while (*__gmp_up == 0) /* Low zero limbs are unchanged by negation. */  | 
2230  |  |     { | 
2231  |  |       *__gmp_rp = 0;  | 
2232  |  |       if (!--__gmp_n) /* All zero */  | 
2233  |  |   return 0;  | 
2234  |  |       ++__gmp_up; ++__gmp_rp;  | 
2235  |  |     }  | 
2236  |  |  | 
2237  |  |   *__gmp_rp = (- *__gmp_up) & GMP_NUMB_MASK;  | 
2238  |  |  | 
2239  |  |   if (--__gmp_n) /* Higher limbs get complemented. */  | 
2240  |  |     mpn_com (++__gmp_rp, ++__gmp_up, __gmp_n);  | 
2241  |  |  | 
2242  |  |   return 1;  | 
2243  |  | }  | 
2244  |  | #endif  | 
2245  |  |  | 
2246  |  | #if defined (__cplusplus)  | 
2247  |  | }  | 
2248  |  | #endif  | 
2249  |  |  | 
2250  |  |  | 
2251  |  | /* Allow faster testing for negative, zero, and positive.  */  | 
2252  | 0  | #define mpz_sgn(Z) ((Z)->_mp_size < 0 ? -1 : (Z)->_mp_size > 0)  | 
2253  |  | #define mpf_sgn(F) ((F)->_mp_size < 0 ? -1 : (F)->_mp_size > 0)  | 
2254  |  | #define mpq_sgn(Q) ((Q)->_mp_num._mp_size < 0 ? -1 : (Q)->_mp_num._mp_size > 0)  | 
2255  |  |  | 
2256  |  | /* When using GCC, optimize certain common comparisons.  */  | 
2257  |  | #if defined (__GNUC__) && __GNUC__ >= 2  | 
2258  |  | #define mpz_cmp_ui(Z,UI) \  | 
2259  | 0  |   (__builtin_constant_p (UI) && (UI) == 0        \  | 
2260  | 0  |    ? mpz_sgn (Z) : _mpz_cmp_ui (Z,UI))  | 
2261  |  | #define mpz_cmp_si(Z,SI)            \  | 
2262  |  |   (__builtin_constant_p ((SI) >= 0) && (SI) >= 0      \  | 
2263  |  |    ? mpz_cmp_ui (Z, __GMP_CAST (unsigned long, SI))     \  | 
2264  |  |    : _mpz_cmp_si (Z,SI))  | 
2265  |  | #define mpq_cmp_ui(Q,NUI,DUI)         \  | 
2266  |  |   (__builtin_constant_p (NUI) && (NUI) == 0 ? mpq_sgn (Q) \  | 
2267  |  |    : __builtin_constant_p ((NUI) == (DUI)) && (NUI) == (DUI)  \  | 
2268  |  |    ? mpz_cmp (mpq_numref (Q), mpq_denref (Q))     \  | 
2269  |  |    : _mpq_cmp_ui (Q,NUI,DUI))  | 
2270  |  | #define mpq_cmp_si(q,n,d)       \  | 
2271  |  |   (__builtin_constant_p ((n) >= 0) && (n) >= 0    \  | 
2272  |  |    ? mpq_cmp_ui (q, __GMP_CAST (unsigned long, n), d) \  | 
2273  |  |    : _mpq_cmp_si (q, n, d))  | 
2274  |  | #else  | 
2275  |  | #define mpz_cmp_ui(Z,UI) _mpz_cmp_ui (Z,UI)  | 
2276  |  | #define mpz_cmp_si(Z,UI) _mpz_cmp_si (Z,UI)  | 
2277  |  | #define mpq_cmp_ui(Q,NUI,DUI) _mpq_cmp_ui (Q,NUI,DUI)  | 
2278  |  | #define mpq_cmp_si(q,n,d)  _mpq_cmp_si(q,n,d)  | 
2279  |  | #endif  | 
2280  |  |  | 
2281  |  |  | 
2282  |  | /* Using "&" rather than "&&" means these can come out branch-free.  Every  | 
2283  |  |    mpz_t has at least one limb allocated, so fetching the low limb is always  | 
2284  |  |    allowed.  */  | 
2285  | 0  | #define mpz_odd_p(z)   (((z)->_mp_size != 0) & __GMP_CAST (int, (z)->_mp_d[0]))  | 
2286  | 0  | #define mpz_even_p(z)  (! mpz_odd_p (z))  | 
2287  |  |  | 
2288  |  |  | 
2289  |  | /**************** C++ routines ****************/  | 
2290  |  |  | 
2291  |  | #ifdef __cplusplus  | 
2292  |  | __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);  | 
2293  |  | __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);  | 
2294  |  | __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);  | 
2295  |  | __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpz_ptr);  | 
2296  |  | __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpq_ptr);  | 
2297  |  | __GMP_DECLSPEC_XX std::istream& operator>> (std::istream &, mpf_ptr);  | 
2298  |  | #endif  | 
2299  |  |  | 
2300  |  |  | 
2301  |  | /* Source-level compatibility with GMP 2 and earlier. */  | 
2302  |  | #define mpn_divmod(qp,np,nsize,dp,dsize) \  | 
2303  |  |   mpn_divrem (qp, __GMP_CAST (mp_size_t, 0), np, nsize, dp, dsize)  | 
2304  |  |  | 
2305  |  | /* Source-level compatibility with GMP 1.  */  | 
2306  |  | #define mpz_mdiv  mpz_fdiv_q  | 
2307  |  | #define mpz_mdivmod mpz_fdiv_qr  | 
2308  |  | #define mpz_mmod  mpz_fdiv_r  | 
2309  |  | #define mpz_mdiv_ui mpz_fdiv_q_ui  | 
2310  |  | #define mpz_mdivmod_ui(q,r,n,d) \  | 
2311  |  |   (((r) == 0) ? mpz_fdiv_q_ui (q,n,d) : mpz_fdiv_qr_ui (q,r,n,d))  | 
2312  |  | #define mpz_mmod_ui(r,n,d) \  | 
2313  |  |   (((r) == 0) ? mpz_fdiv_ui (n,d) : mpz_fdiv_r_ui (r,n,d))  | 
2314  |  |  | 
2315  |  | /* Useful synonyms, but not quite compatible with GMP 1.  */  | 
2316  |  | #define mpz_div   mpz_fdiv_q  | 
2317  |  | #define mpz_divmod  mpz_fdiv_qr  | 
2318  |  | #define mpz_div_ui  mpz_fdiv_q_ui  | 
2319  |  | #define mpz_divmod_ui mpz_fdiv_qr_ui  | 
2320  |  | #define mpz_div_2exp  mpz_fdiv_q_2exp  | 
2321  |  | #define mpz_mod_2exp  mpz_fdiv_r_2exp  | 
2322  |  |  | 
2323  |  | enum  | 
2324  |  | { | 
2325  |  |   GMP_ERROR_NONE = 0,  | 
2326  |  |   GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,  | 
2327  |  |   GMP_ERROR_DIVISION_BY_ZERO = 2,  | 
2328  |  |   GMP_ERROR_SQRT_OF_NEGATIVE = 4,  | 
2329  |  |   GMP_ERROR_INVALID_ARGUMENT = 8,  | 
2330  |  |   GMP_ERROR_MPZ_OVERFLOW = 16  | 
2331  |  | };  | 
2332  |  |  | 
2333  |  | /* Define CC and CFLAGS which were used to build this version of GMP */  | 
2334  |  | #define __GMP_CC "clang"  | 
2335  |  | #define __GMP_CFLAGS "-O1   -fno-omit-frame-pointer   -gline-tables-only   -Wno-error=enum-constexpr-conversion   -Wno-error=incompatible-function-pointer-types   -Wno-error=int-conversion   -Wno-error=deprecated-declarations   -Wno-error=implicit-function-declaration   -Wno-error=implicit-int   -Wno-error=vla-cxx-extension   -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION  -fprofile-instr-generate -fcoverage-mapping -pthread -Wl,--no-as-needed -Wl,-ldl -Wl,-lm -Wno-unused-command-line-argument -I/src/wget_deps/include -L/src/wget_deps/lib"  | 
2336  |  |  | 
2337  |  | /* Major version number is the value of __GNU_MP__ too, above. */  | 
2338  |  | #define __GNU_MP_VERSION            6  | 
2339  |  | #define __GNU_MP_VERSION_MINOR      3  | 
2340  |  | #define __GNU_MP_VERSION_PATCHLEVEL 0  | 
2341  |  | #define __GNU_MP_RELEASE (__GNU_MP_VERSION * 10000 + __GNU_MP_VERSION_MINOR * 100 + __GNU_MP_VERSION_PATCHLEVEL)  | 
2342  |  |  | 
2343  |  | #define __GMP_H__  | 
2344  |  | #endif /* __GMP_H__ */  |