Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

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