[BACK]Return to gmp.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / windows / mpir

Annotation of OpenXM_contrib2/windows/mpir/gmp.h, Revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>